mirror of
https://github.com/minetest/minetest.git
synced 2024-11-23 16:13:46 +01:00
Clean up stack after script_get_backtrace (#7854)
script_get_backtrace() was leaving its return value on the stack, corrupting subsequent lua operations for functions that did not immediately return. This problem can specifically be observed in the case of multiple "groupcaps" entries, each of which provides the legacy "maxwear" property. These cause a backtrace and thus pollute the stack for the following lua_next() call.
This commit is contained in:
parent
faa358e797
commit
ddd9317b73
@ -27,7 +27,9 @@ std::string script_get_backtrace(lua_State *L)
|
|||||||
{
|
{
|
||||||
lua_rawgeti(L, LUA_REGISTRYINDEX, CUSTOM_RIDX_BACKTRACE);
|
lua_rawgeti(L, LUA_REGISTRYINDEX, CUSTOM_RIDX_BACKTRACE);
|
||||||
lua_call(L, 0, 1);
|
lua_call(L, 0, 1);
|
||||||
return luaL_checkstring(L, -1);
|
std::string result = luaL_checkstring(L, -1);
|
||||||
|
lua_pop(L, 1);
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
int script_exception_wrapper(lua_State *L, lua_CFunction f)
|
int script_exception_wrapper(lua_State *L, lua_CFunction f)
|
||||||
|
Loading…
Reference in New Issue
Block a user