]> git.ipfire.org Git - thirdparty/LuaJIT.git/commitdiff
From Lua 5.2: Add luaL_setmetatable().
authorMike Pall <mike>
Fri, 7 Apr 2017 10:38:05 +0000 (12:38 +0200)
committerMike Pall <mike>
Fri, 7 Apr 2017 10:38:05 +0000 (12:38 +0200)
Contributed by François Perrad.

src/lauxlib.h
src/lib_package.c
src/lj_api.c

index 1ca0d74f1defa248f94e5c948f53275b4a41dc56..a44f0272b3ab0745b0ce798d377b40d2cce113cd 100644 (file)
@@ -89,6 +89,7 @@ LUALIB_API void (luaL_setfuncs) (lua_State *L, const luaL_Reg *l, int nup);
 LUALIB_API void (luaL_pushmodule) (lua_State *L, const char *modname,
                                   int sizehint);
 LUALIB_API void *(luaL_testudata) (lua_State *L, int ud, const char *tname);
+LUALIB_API void (luaL_setmetatable) (lua_State *L, const char *tname);
 
 
 /*
index 40bafed57a553695c2eabdac4a0c40daaf735e7d..6fac43ec3ea6acf987cbd999abfc567d134c493e 100644 (file)
@@ -193,8 +193,7 @@ static void **ll_register(lua_State *L, const char *path)
     lua_pop(L, 1);
     plib = (void **)lua_newuserdata(L, sizeof(void *));
     *plib = NULL;
-    luaL_getmetatable(L, "_LOADLIB");
-    lua_setmetatable(L, -2);
+    luaL_setmetatable(L, "_LOADLIB");
     lua_pushfstring(L, "LOADLIB: %s", path);
     lua_pushvalue(L, -2);
     lua_settable(L, LUA_REGISTRYINDEX);
index c784ed3fad6b9615204f57b23969e3116093345f..fe8880eb18d7d32a493f809b176418312d1db88f 100644 (file)
@@ -1000,6 +1000,12 @@ LUA_API int lua_setmetatable(lua_State *L, int idx)
   return 1;
 }
 
+LUALIB_API void luaL_setmetatable(lua_State *L, const char *tname)
+{
+  lua_getfield(L, LUA_REGISTRYINDEX, tname);
+  lua_setmetatable(L, -2);
+}
+
 LUA_API int lua_setfenv(lua_State *L, int idx)
 {
   cTValue *o = index2adr(L, idx);