diff options
| author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2008-01-17 14:24:30 -0200 |
|---|---|---|
| committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2008-01-17 14:24:30 -0200 |
| commit | 56c17ba4c7bfc1ed6df3d255f056053745835769 (patch) | |
| tree | 2632572a9a00f086c3b4bc3fca61bfd04510fcaf | |
| parent | daddc57abd31e30215922a716cb6d26422f3658b (diff) | |
| download | lua-56c17ba4c7bfc1ed6df3d255f056053745835769.tar.gz lua-56c17ba4c7bfc1ed6df3d255f056053745835769.tar.bz2 lua-56c17ba4c7bfc1ed6df3d255f056053745835769.zip | |
detail
| -rw-r--r-- | lauxlib.c | 7 |
1 files changed, 3 insertions, 4 deletions
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** $Id: lauxlib.c,v 1.174 2007/09/14 13:26:28 roberto Exp roberto $ | 2 | ** $Id: lauxlib.c,v 1.175 2008/01/03 17:07:59 roberto Exp roberto $ |
| 3 | ** Auxiliary functions for building Lua libraries | 3 | ** Auxiliary functions for building Lua libraries |
| 4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
| 5 | */ | 5 | */ |
| @@ -586,14 +586,13 @@ static int libsize (const luaL_Reg *l) { | |||
| 586 | LUALIB_API void luaL_register (lua_State *L, const char *libname, | 586 | LUALIB_API void luaL_register (lua_State *L, const char *libname, |
| 587 | const luaL_Reg *l) { | 587 | const luaL_Reg *l) { |
| 588 | if (libname) { | 588 | if (libname) { |
| 589 | int size = libsize(l); | ||
| 590 | /* check whether lib already exists */ | 589 | /* check whether lib already exists */ |
| 591 | luaL_findtable(L, LUA_REGISTRYINDEX, "_LOADED", size); | 590 | luaL_findtable(L, LUA_REGISTRYINDEX, "_LOADED", 1); |
| 592 | lua_getfield(L, -1, libname); /* get _LOADED[libname] */ | 591 | lua_getfield(L, -1, libname); /* get _LOADED[libname] */ |
| 593 | if (!lua_istable(L, -1)) { /* not found? */ | 592 | if (!lua_istable(L, -1)) { /* not found? */ |
| 594 | lua_pop(L, 1); /* remove previous result */ | 593 | lua_pop(L, 1); /* remove previous result */ |
| 595 | /* try global variable (and create one if it does not exist) */ | 594 | /* try global variable (and create one if it does not exist) */ |
| 596 | if (luaL_findtable(L, LUA_GLOBALSINDEX, libname, size) != NULL) | 595 | if (luaL_findtable(L, LUA_GLOBALSINDEX, libname, libsize(l)) != NULL) |
| 597 | luaL_error(L, "name conflict for module " LUA_QS, libname); | 596 | luaL_error(L, "name conflict for module " LUA_QS, libname); |
| 598 | lua_pushvalue(L, -1); | 597 | lua_pushvalue(L, -1); |
| 599 | lua_setfield(L, -3, libname); /* _LOADED[libname] = new table */ | 598 | lua_setfield(L, -3, libname); /* _LOADED[libname] = new table */ |
