diff options
Diffstat (limited to 'loadlib.c')
-rw-r--r-- | loadlib.c | 12 |
1 files changed, 7 insertions, 5 deletions
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | ** $Id: loadlib.c,v 1.15 2004/12/29 18:56:34 roberto Exp roberto $ | 2 | ** $Id: loadlib.c,v 1.16 2005/01/14 14:17:18 roberto Exp roberto $ |
3 | ** Dynamic library loader for Lua | 3 | ** Dynamic library loader for Lua |
4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
5 | * | 5 | * |
@@ -302,7 +302,7 @@ static int loader_Lua (lua_State *L) { | |||
302 | path = lua_tostring(L, -1); | 302 | path = lua_tostring(L, -1); |
303 | if (!path) { | 303 | if (!path) { |
304 | lua_pop(L, 1); | 304 | lua_pop(L, 1); |
305 | luaL_getfield(L, LUA_REGISTRYINDEX, "_PACKAGE.path"); | 305 | lua_getfield(L, LUA_ENVIRONINDEX, "path"); |
306 | path = lua_tostring(L, -1); | 306 | path = lua_tostring(L, -1); |
307 | } | 307 | } |
308 | if (path == NULL) | 308 | if (path == NULL) |
@@ -320,7 +320,7 @@ static int loader_C (lua_State *L) { | |||
320 | const char *fname = luaL_gsub(L, name, ".", LUA_DIRSEP); | 320 | const char *fname = luaL_gsub(L, name, ".", LUA_DIRSEP); |
321 | const char *path; | 321 | const char *path; |
322 | const char *funcname; | 322 | const char *funcname; |
323 | luaL_getfield(L, LUA_REGISTRYINDEX, "_PACKAGE.cpath"); | 323 | lua_getfield(L, LUA_ENVIRONINDEX, "cpath"); |
324 | path = lua_tostring(L, -1); | 324 | path = lua_tostring(L, -1); |
325 | if (path == NULL) | 325 | if (path == NULL) |
326 | luaL_error(L, "`package.cpath' must be a string"); | 326 | luaL_error(L, "`package.cpath' must be a string"); |
@@ -335,7 +335,7 @@ static int loader_C (lua_State *L) { | |||
335 | 335 | ||
336 | 336 | ||
337 | static int loader_preload (lua_State *L) { | 337 | static int loader_preload (lua_State *L) { |
338 | luaL_getfield(L, LUA_REGISTRYINDEX, "_PACKAGE.preload"); | 338 | lua_getfield(L, LUA_ENVIRONINDEX, "preload"); |
339 | if (!lua_istable(L, -1)) | 339 | if (!lua_istable(L, -1)) |
340 | luaL_error(L, "`package.preload' must be a table"); | 340 | luaL_error(L, "`package.preload' must be a table"); |
341 | lua_getfield(L, -1, luaL_checkstring(L, 1)); | 341 | lua_getfield(L, -1, luaL_checkstring(L, 1)); |
@@ -355,7 +355,7 @@ static int ll_require (lua_State *L) { | |||
355 | lua_pushboolean(L, 1); | 355 | lua_pushboolean(L, 1); |
356 | lua_setfield(L, 2, name); /* _LOADED[name] = true */ | 356 | lua_setfield(L, 2, name); /* _LOADED[name] = true */ |
357 | /* iterate over available loaders */ | 357 | /* iterate over available loaders */ |
358 | luaL_getfield(L, LUA_REGISTRYINDEX, "_PACKAGE.loaders"); | 358 | lua_getfield(L, LUA_ENVIRONINDEX, "loaders"); |
359 | if (!lua_istable(L, -1)) | 359 | if (!lua_istable(L, -1)) |
360 | luaL_error(L, "`package.loaders' must be a table"); | 360 | luaL_error(L, "`package.loaders' must be a table"); |
361 | for (i=1;; i++) { | 361 | for (i=1;; i++) { |
@@ -457,6 +457,8 @@ LUALIB_API int luaopen_loadlib (lua_State *L) { | |||
457 | lua_setglobal(L, "package"); | 457 | lua_setglobal(L, "package"); |
458 | lua_pushvalue(L, -1); | 458 | lua_pushvalue(L, -1); |
459 | lua_setfield(L, LUA_REGISTRYINDEX, "_PACKAGE"); | 459 | lua_setfield(L, LUA_REGISTRYINDEX, "_PACKAGE"); |
460 | lua_pushvalue(L, -1); | ||
461 | lua_replace(L, LUA_ENVIRONINDEX); | ||
460 | /* create `loaders' table */ | 462 | /* create `loaders' table */ |
461 | lua_newtable(L); | 463 | lua_newtable(L); |
462 | /* fill it with pre-defined loaders */ | 464 | /* fill it with pre-defined loaders */ |