|
|
@ -185,9 +185,10 @@ void luaF_close (lua_State *L, StkId level) {
|
|
|
|
if (uv->refcount == 0) /* no references? */
|
|
|
|
if (uv->refcount == 0) /* no references? */
|
|
|
|
luaM_free(L, uv); /* free upvalue */
|
|
|
|
luaM_free(L, uv); /* free upvalue */
|
|
|
|
else {
|
|
|
|
else {
|
|
|
|
setobj(L, &uv->u.value, uv->v); /* move value to upvalue slot */
|
|
|
|
TValue* slot = &uv->u.value; /* new position for value */
|
|
|
|
uv->v = &uv->u.value; /* now current value lives here */
|
|
|
|
setobj(L, slot, uv->v); /* move value to upvalue slot */
|
|
|
|
luaC_upvalbarrier(L, uv);
|
|
|
|
uv->v = slot; /* now current value lives here */
|
|
|
|
|
|
|
|
luaC_upvalbarrier(L, uv, slot);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|