aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authormoteus <mimir@newmail.ru>2013-12-26 19:37:13 +0400
committermoteus <mimir@newmail.ru>2013-12-26 19:37:13 +0400
commitd03730ad214287f5a209c7d661189329cc6ea80b (patch)
tree27b72f7daba130ae655f311b8649efffd1c831ba /src
parentf59cb16f4a528aafad21ae9a33f482098893d22a (diff)
downloadlua-llthreads2-d03730ad214287f5a209c7d661189329cc6ea80b.tar.gz
lua-llthreads2-d03730ad214287f5a209c7d661189329cc6ea80b.tar.bz2
lua-llthreads2-d03730ad214287f5a209c7d661189329cc6ea80b.zip
Fix. Open libraries with luaL_openlibs.
Diffstat (limited to 'src')
-rw-r--r--src/llthread.c22
1 files changed, 12 insertions, 10 deletions
diff --git a/src/llthread.c b/src/llthread.c
index ffb8235..492766e 100644
--- a/src/llthread.c
+++ b/src/llthread.c
@@ -339,13 +339,15 @@ void llthread_log(lua_State *L, const char *hdr, const char *msg){
339static void open_thread_libs(lua_State *L){ 339static void open_thread_libs(lua_State *L){
340 int top = lua_gettop(L); 340 int top = lua_gettop(L);
341 341
342 /* luaL_openlibs(L); lua_settop(L, top); return; */ 342#ifndef LLTHREAD_REGISTER_STD_LIBRARY
343 343 luaL_openlibs(L);
344#ifdef LLTHREAD_REGISTER_STD_LIBRARY 344 lua_getglobal(L, "package"); lua_getfield(L, -1, "preload"); lua_remove(L, -2);
345# define L_REGLIB(L, name, G) lua_pushcfunction(L, luaopen_##name); lua_setfield(L, -2, #name) 345 lua_pushcfunction(L, luaopen_llthreads); lua_setfield(L, -2, "llthreads");
346 lua_settop(L, top);
347 return;
346#else 348#else
347# define L_REGLIB(L, name, G) lutil_require(L, #name, luaopen_##name, G) 349
348#endif 350#define L_REGLIB(L, name, G) lua_pushcfunction(L, luaopen_##name); lua_setfield(L, -2, #name)
349 351
350 lutil_require(L, "_G", luaopen_base, 1); 352 lutil_require(L, "_G", luaopen_base, 1);
351 lutil_require(L, "package", luaopen_package, 1); 353 lutil_require(L, "package", luaopen_package, 1);
@@ -353,20 +355,18 @@ static void open_thread_libs(lua_State *L){
353 355
354 /* get package.preload */ 356 /* get package.preload */
355 lua_getglobal(L, "package"); lua_getfield(L, -1, "preload"); lua_remove(L, -2); 357 lua_getglobal(L, "package"); lua_getfield(L, -1, "preload"); lua_remove(L, -2);
356
357 /*always only register*/
358 lua_pushcfunction(L, luaopen_llthreads); lua_setfield(L, -2, "llthreads");
359
360 L_REGLIB(L, io, 1); 358 L_REGLIB(L, io, 1);
361 L_REGLIB(L, os, 1); 359 L_REGLIB(L, os, 1);
362 L_REGLIB(L, math, 1); 360 L_REGLIB(L, math, 1);
363 L_REGLIB(L, table, 1); 361 L_REGLIB(L, table, 1);
364 L_REGLIB(L, string, 1); 362 L_REGLIB(L, string, 1);
363 L_REGLIB(L, llthreads, 0);
365 364
366#ifdef LUA_DBLIBNAME 365#ifdef LUA_DBLIBNAME
367 L_REGLIB(L, debug, 1); 366 L_REGLIB(L, debug, 1);
368#endif 367#endif
369 368
369 /* @fixme find out luaopen_XXX in runtime */
370#ifdef LUA_JITLIBNAME 370#ifdef LUA_JITLIBNAME
371 L_REGLIB(L, bit, 1); 371 L_REGLIB(L, bit, 1);
372 L_REGLIB(L, jit, 1); 372 L_REGLIB(L, jit, 1);
@@ -377,6 +377,8 @@ static void open_thread_libs(lua_State *L){
377 377
378 lua_settop(L, top); 378 lua_settop(L, top);
379#undef L_REGLIB 379#undef L_REGLIB
380
381#endif
380} 382}
381 383
382static llthread_child_t *llthread_child_new() { 384static llthread_child_t *llthread_child_new() {