When referencing a value like so:
lua_pushnumber(L, 1);
ref = luaL_ref(L, LUA_REGISTRYINDEX);
Is it harmless to unreference ref
multiple times or will this cause problems? i.e. is it harmless to call luaL_unref(L, LUA_REGISTRYINDEX, ref)
multiple times for the code above or must there be only one luaL_unref
call for each luaL_ref
call?
It must be exactly one luaL_unref
.
Lua saves unrefed indices in a linked list for later reusing by luaL_ref
.
Unrefing the same index twice will lead to getting later this index twice from luaL_ref
. This means you will overwrite your data previously refed.
See https://www.lua.org/source/5.4/lauxlib.c.html#luaL_unref