From 6a64de8297f77f067c9a67465541527bf6eda0c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tam=C3=A1s=20B=C3=A1lint=20Misius?= Date: Sat, 2 Sep 2023 13:32:39 +0200 Subject: [PATCH] Fix LuaScriptInterface ctor stack imbalance --- src/lua/LuaScriptInterface.cpp | 57 +++++++++++++++++++++------------- 1 file changed, 36 insertions(+), 21 deletions(-) diff --git a/src/lua/LuaScriptInterface.cpp b/src/lua/LuaScriptInterface.cpp index 8f6fd9df6..10fd28ccd 100644 --- a/src/lua/LuaScriptInterface.cpp +++ b/src/lua/LuaScriptInterface.cpp @@ -291,6 +291,7 @@ LuaScriptInterface::LuaScriptInterface(GameController * c, GameModel * m): lua_atpanic(l, atPanic); luaL_openlibs(l); luaopen_bit(l); + lua_pop(l, 1); lua_pushliteral(l, "Luacon_ci"); lua_pushlightuserdata(l, this); @@ -536,6 +537,7 @@ tpt.partsdata = nil"); { throw std::runtime_error(ByteString("failed to load built-in eventcompat: ") + tpt_lua_toByteString(l, -1)); } + lua_pop(l, 1); } void LuaScriptInterface::custom_init_can_move() @@ -796,13 +798,14 @@ void LuaScriptInterface::initInterfaceAPI() {NULL, NULL} }; luaL_register(l, "interface", interfaceAPIMethods); - - //Ren shortcut - lua_getglobal(l, "interface"); initLuaSDLKeys(l); lua_pushinteger(l, GameController::mouseUpNormal); lua_setfield(l, -2, "MOUSE_UP_NORMAL"); lua_pushinteger(l, GameController::mouseUpBlur); lua_setfield(l, -2, "MOUSE_UP_BLUR"); lua_pushinteger(l, GameController::mouseUpDrawEnd); lua_setfield(l, -2, "MOUSE_UP_DRAW_END"); + lua_pop(l, 1); + + //Ren shortcut + lua_getglobal(l, "interface"); lua_setglobal(l, "ui"); Luna::Register(l); @@ -1169,10 +1172,6 @@ void LuaScriptInterface::initSimulationAPI() }; luaL_register(l, "simulation", simulationAPIMethods); - //Sim shortcut - lua_getglobal(l, "simulation"); - lua_setglobal(l, "sim"); - //Static values SETCONST(l, CELL); SETCONST(l, XCELLS); @@ -1254,6 +1253,12 @@ void LuaScriptInterface::initSimulationAPI() lua_pushcfunction(l, simulation_deletesign); lua_setfield(l, -2, "delete"); lua_setfield(l, -2, "signs"); + + lua_pop(l, 1); + + //Sim shortcut + lua_getglobal(l, "simulation"); + lua_setglobal(l, "sim"); } void LuaScriptInterface::set_map(int x, int y, int width, int height, float value, int map) // A function so this won't need to be repeated many times later @@ -2745,10 +2750,6 @@ void LuaScriptInterface::initRendererAPI() }; luaL_register(l, "renderer", rendererAPIMethods); - //Ren shortcut - lua_getglobal(l, "renderer"); - lua_setglobal(l, "ren"); - //Static values //Particle pixel modes/fire mode/effects SETCONST(l, PMODE); @@ -2796,6 +2797,12 @@ void LuaScriptInterface::initRendererAPI() SETCONST(l, DISPLAY_WARP); SETCONST(l, DISPLAY_PERS); SETCONST(l, DISPLAY_EFFE); + + lua_pop(l, 1); + + //Ren shortcut + lua_getglobal(l, "renderer"); + lua_setglobal(l, "ren"); } //get/set render modes list @@ -3022,10 +3029,6 @@ void LuaScriptInterface::initElementsAPI() }; luaL_register(l, "elements", elementsAPIMethods); - //elem shortcut - lua_getglobal(l, "elements"); - lua_setglobal(l, "elem"); - //Static values //Element types/properties/states SETCONST(l, TYPE_PART); @@ -3095,6 +3098,12 @@ void LuaScriptInterface::initElementsAPI() } } } + + lua_pop(l, 1); + + //elem shortcut + lua_getglobal(l, "elements"); + lua_setglobal(l, "elem"); } void LuaScriptInterface::LuaGetProperty(lua_State* l, StructProperty property, intptr_t propertyAddress) @@ -3923,12 +3932,14 @@ void LuaScriptInterface::initGraphicsAPI() }; luaL_register(l, "graphics", graphicsAPIMethods); + lua_pushinteger(l, WINDOWW); lua_setfield(l, -2, "WIDTH"); + lua_pushinteger(l, WINDOWH); lua_setfield(l, -2, "HEIGHT"); + + lua_pop(l, 1); + //elem shortcut lua_getglobal(l, "graphics"); lua_setglobal(l, "gfx"); - - lua_pushinteger(l, WINDOWW); lua_setfield(l, -2, "WIDTH"); - lua_pushinteger(l, WINDOWH); lua_setfield(l, -2, "HEIGHT"); } int LuaScriptInterface::graphics_textSize(lua_State * l) @@ -4175,6 +4186,7 @@ void LuaScriptInterface::initFileSystemAPI() {NULL, NULL} }; luaL_register(l, "fileSystem", fileSystemAPIMethods); + lua_pop(l, 1); //elem shortcut lua_getglobal(l, "fileSystem"); @@ -4284,6 +4296,7 @@ void LuaScriptInterface::initPlatformAPI() {NULL, NULL} }; luaL_register(l, "platform", platformAPIMethods); + lua_pop(l, 1); //elem shortcut lua_getglobal(l, "platform"); @@ -4357,9 +4370,6 @@ void LuaScriptInterface::initEventAPI() }; luaL_register(l, "event", eventAPIMethods); - lua_getglobal(l, "event"); - lua_setglobal(l, "evt"); - lua_pushinteger(l, VariantIndex()); lua_setfield(l, -2, "textinput" ); lua_pushinteger(l, VariantIndex()); lua_setfield(l, -2, "textediting"); lua_pushinteger(l, VariantIndex()); lua_setfield(l, -2, "keypress" ); @@ -4373,6 +4383,11 @@ void LuaScriptInterface::initEventAPI() lua_pushinteger(l, VariantIndex()); lua_setfield(l, -2, "close" ); lua_pushinteger(l, VariantIndex()); lua_setfield(l, -2, "beforesim" ); lua_pushinteger(l, VariantIndex()); lua_setfield(l, -2, "aftersim" ); + + lua_pop(l, 1); + + lua_getglobal(l, "event"); + lua_setglobal(l, "evt"); } int LuaScriptInterface::event_register(lua_State * l)