From 88ed9fdbbba632d174a473a0a97c914089c2916d Mon Sep 17 00:00:00 2001 From: Mike Pall Date: Sun, 10 Mar 2024 17:13:28 +0100 Subject: [PATCH] Handle stack reallocation in debug.setmetatable() and lua_setmetatable(). Thanks to Sergey Kaplun. #1172 --- src/lj_api.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/lj_api.c b/src/lj_api.c index 2018cb8f..d40ade30 100644 --- a/src/lj_api.c +++ b/src/lj_api.c @@ -975,6 +975,7 @@ LUA_API int lua_setmetatable(lua_State *L, int idx) /* Flush cache, since traces specialize to basemt. But not during __gc. */ if (lj_trace_flushall(L)) lj_err_caller(L, LJ_ERR_NOGCMM); + o = index2adr(L, idx); /* Stack may have been reallocated. */ if (tvisbool(o)) { /* NOBARRIER: basemt is a GC root. */ setgcref(basemt_it(g, LJ_TTRUE), obj2gco(mt)); -- 2.11.4.GIT