diff options
author | Mike Pall <mike> | 2017-04-07 12:38:05 +0200 |
---|---|---|
committer | Mike Pall <mike> | 2017-04-07 12:38:05 +0200 |
commit | 2b8de8cfc6ae483d6ec16b7609bab64e37d6fc02 (patch) | |
tree | 4bd1834a7f4b22d215b9d89a04e33452155e71ec | |
parent | cde968f91f28a4819e15443a5f32c89daddb4c15 (diff) | |
download | luajit-2b8de8cfc6ae483d6ec16b7609bab64e37d6fc02.tar.gz luajit-2b8de8cfc6ae483d6ec16b7609bab64e37d6fc02.tar.bz2 luajit-2b8de8cfc6ae483d6ec16b7609bab64e37d6fc02.zip |
From Lua 5.2: Add luaL_setmetatable().
Contributed by François Perrad.
-rw-r--r-- | src/lauxlib.h | 1 | ||||
-rw-r--r-- | src/lib_package.c | 3 | ||||
-rw-r--r-- | src/lj_api.c | 6 |
3 files changed, 8 insertions, 2 deletions
diff --git a/src/lauxlib.h b/src/lauxlib.h index 1ca0d74f..a44f0272 100644 --- a/src/lauxlib.h +++ b/src/lauxlib.h | |||
@@ -89,6 +89,7 @@ LUALIB_API void (luaL_setfuncs) (lua_State *L, const luaL_Reg *l, int nup); | |||
89 | LUALIB_API void (luaL_pushmodule) (lua_State *L, const char *modname, | 89 | LUALIB_API void (luaL_pushmodule) (lua_State *L, const char *modname, |
90 | int sizehint); | 90 | int sizehint); |
91 | LUALIB_API void *(luaL_testudata) (lua_State *L, int ud, const char *tname); | 91 | LUALIB_API void *(luaL_testudata) (lua_State *L, int ud, const char *tname); |
92 | LUALIB_API void (luaL_setmetatable) (lua_State *L, const char *tname); | ||
92 | 93 | ||
93 | 94 | ||
94 | /* | 95 | /* |
diff --git a/src/lib_package.c b/src/lib_package.c index 40bafed5..6fac43ec 100644 --- a/src/lib_package.c +++ b/src/lib_package.c | |||
@@ -193,8 +193,7 @@ static void **ll_register(lua_State *L, const char *path) | |||
193 | lua_pop(L, 1); | 193 | lua_pop(L, 1); |
194 | plib = (void **)lua_newuserdata(L, sizeof(void *)); | 194 | plib = (void **)lua_newuserdata(L, sizeof(void *)); |
195 | *plib = NULL; | 195 | *plib = NULL; |
196 | luaL_getmetatable(L, "_LOADLIB"); | 196 | luaL_setmetatable(L, "_LOADLIB"); |
197 | lua_setmetatable(L, -2); | ||
198 | lua_pushfstring(L, "LOADLIB: %s", path); | 197 | lua_pushfstring(L, "LOADLIB: %s", path); |
199 | lua_pushvalue(L, -2); | 198 | lua_pushvalue(L, -2); |
200 | lua_settable(L, LUA_REGISTRYINDEX); | 199 | lua_settable(L, LUA_REGISTRYINDEX); |
diff --git a/src/lj_api.c b/src/lj_api.c index c784ed3f..fe8880eb 100644 --- a/src/lj_api.c +++ b/src/lj_api.c | |||
@@ -1000,6 +1000,12 @@ LUA_API int lua_setmetatable(lua_State *L, int idx) | |||
1000 | return 1; | 1000 | return 1; |
1001 | } | 1001 | } |
1002 | 1002 | ||
1003 | LUALIB_API void luaL_setmetatable(lua_State *L, const char *tname) | ||
1004 | { | ||
1005 | lua_getfield(L, LUA_REGISTRYINDEX, tname); | ||
1006 | lua_setmetatable(L, -2); | ||
1007 | } | ||
1008 | |||
1003 | LUA_API int lua_setfenv(lua_State *L, int idx) | 1009 | LUA_API int lua_setfenv(lua_State *L, int idx) |
1004 | { | 1010 | { |
1005 | cTValue *o = index2adr(L, idx); | 1011 | cTValue *o = index2adr(L, idx); |