diff options
Diffstat (limited to 'lua.c')
| -rw-r--r-- | lua.c | 15 |
1 files changed, 5 insertions, 10 deletions
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** $Id: lua.c,v 1.202 2011/08/17 20:19:52 roberto Exp roberto $ | 2 | ** $Id: lua.c,v 1.203 2011/12/12 16:34:03 roberto Exp roberto $ |
| 3 | ** Lua stand-alone interpreter | 3 | ** Lua stand-alone interpreter |
| 4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
| 5 | */ | 5 | */ |
| @@ -223,16 +223,11 @@ static int dostring (lua_State *L, const char *s, const char *name) { | |||
| 223 | 223 | ||
| 224 | static int dolibrary (lua_State *L, const char *name) { | 224 | static int dolibrary (lua_State *L, const char *name) { |
| 225 | int status; | 225 | int status; |
| 226 | lua_pushglobaltable(L); | 226 | lua_getglobal(L, "require"); |
| 227 | lua_getfield(L, -1, "require"); | ||
| 228 | lua_pushstring(L, name); | 227 | lua_pushstring(L, name); |
| 229 | status = docall(L, 1, 1); | 228 | status = docall(L, 1, 1); /* call 'require(name)' */ |
| 230 | if (status == LUA_OK) { | 229 | if (status == LUA_OK) |
| 231 | lua_setfield(L, -2, name); /* global[name] = require return */ | 230 | lua_setglobal(L, name); /* global[name] = require return */ |
| 232 | lua_pop(L, 1); /* remove global table */ | ||
| 233 | } | ||
| 234 | else | ||
| 235 | lua_remove(L, -2); /* remove global table (below error msg.) */ | ||
| 236 | return report(L, status); | 231 | return report(L, status); |
| 237 | } | 232 | } |
| 238 | 233 | ||
