diff options
author | benoit-germain <bnt.germain@gmail.com> | 2012-04-26 12:55:51 +0300 |
---|---|---|
committer | benoit-germain <bnt.germain@gmail.com> | 2012-04-26 12:55:51 +0300 |
commit | c8cf765c782fd12344911af24ff23624cac02d0c (patch) | |
tree | 64bf41edf8272c14fe73c60c4d4685d931f67daa /src | |
parent | 213dda9224f18c156bb94b2c6c054ce400a22bd0 (diff) | |
download | lanes-c8cf765c782fd12344911af24ff23624cac02d0c.tar.gz lanes-c8cf765c782fd12344911af24ff23624cac02d0c.tar.bz2 lanes-c8cf765c782fd12344911af24ff23624cac02d0c.zip |
Improve LuaJIT compatibility, part #1: "*" library list is loaded through luaL_openlibs()
Diffstat (limited to 'src')
-rw-r--r-- | src/tools.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/tools.c b/src/tools.c index ccd941d..ee2a1ca 100644 --- a/src/tools.c +++ b/src/tools.c | |||
@@ -446,8 +446,16 @@ lua_State* luaG_newstate( char const* libs, lua_CFunction _on_state_create) | |||
446 | } | 446 | } |
447 | if( libs) | 447 | if( libs) |
448 | { | 448 | { |
449 | lua_pushcfunction( L, luaopen_base); | 449 | if( libs[0] == '*' && libs[1] == 0) // special "*" case (mainly to help with LuaJIT compatibility) |
450 | lua_call( L, 0, 0); | 450 | { |
451 | luaL_openlibs( L); | ||
452 | libs = NULL; // done with libs | ||
453 | } | ||
454 | else | ||
455 | { | ||
456 | lua_pushcfunction( L, luaopen_base); | ||
457 | lua_call( L, 0, 0); | ||
458 | } | ||
451 | } | 459 | } |
452 | // after opening base, register the functions it exported in our name<->function database | 460 | // after opening base, register the functions it exported in our name<->function database |
453 | populate_func_lookup_table( L, LUA_GLOBALSINDEX, NULL); | 461 | populate_func_lookup_table( L, LUA_GLOBALSINDEX, NULL); |