Fix write barrier for lua_setupvalue() and debug.setupvalue().

This commit is contained in:
Mike Pall
2020-03-20 13:35:49 +01:00
parent 522d2073da
commit e613105ca9
3 changed files with 12 additions and 6 deletions

View File

@@ -841,7 +841,8 @@ LUA_API int lua_next(lua_State *L, int idx)
LUA_API const char *lua_getupvalue(lua_State *L, int idx, int n)
{
TValue *val;
const char *name = lj_debug_uvnamev(index2adr(L, idx), (uint32_t)(n-1), &val);
GCobj *o;
const char *name = lj_debug_uvnamev(index2adr(L, idx), (uint32_t)(n-1), &val, &o);
if (name) {
copyTV(L, L->top, val);
incr_top(L);
@@ -1014,13 +1015,14 @@ LUA_API const char *lua_setupvalue(lua_State *L, int idx, int n)
{
cTValue *f = index2adr(L, idx);
TValue *val;
GCobj *o;
const char *name;
api_checknelems(L, 1);
name = lj_debug_uvnamev(f, (uint32_t)(n-1), &val);
name = lj_debug_uvnamev(f, (uint32_t)(n-1), &val, &o);
if (name) {
L->top--;
copyTV(L, val, L->top);
lj_gc_barrier(L, funcV(f), L->top);
lj_gc_barrier(L, o, L->top);
}
return name;
}