Fix Lua stack imbalance when registering module (#11683) a03a19071f Co-authored-by: Philip Chung <philterdesign@gmail.com>
diff --git a/.rive_head b/.rive_head index 0e900b2..fe93c07 100644 --- a/.rive_head +++ b/.rive_head
@@ -1 +1 @@ -3fb7ee93b669bbd97b22ff4bb690c22ebd1797be +a03a19071f550263c1bed327923a1e0d32975618
diff --git a/src/lua/rive_lua_libs.cpp b/src/lua/rive_lua_libs.cpp index 91ed78d..fa40897 100644 --- a/src/lua/rive_lua_libs.cpp +++ b/src/lua/rive_lua_libs.cpp
@@ -596,12 +596,18 @@ // required dependencies for (ModuleDetails* moduleDetails : m_modulesToRegister) { - // Skip if already registered - if (checkRegisteredModules(state, - moduleDetails->moduleName().c_str()) == 1) + if (moduleDetails == nullptr) { continue; } + std::string moduleName = moduleDetails->moduleName(); + + // Skip if already registered + if (checkRegisteredModules(state, moduleName.c_str()) == 1) + { + lua_pop(state, 1); + continue; + } tryRegisterModule(state, moduleDetails); } @@ -734,7 +740,7 @@ const char* name, Span<uint8_t> bytecode) { - // Check if already registered + // Check if already registered - leave module on stack for caller to use if (checkRegisteredModules(state, name) == 1) { return true; @@ -760,6 +766,7 @@ // Check if already registered if (checkRegisteredModules(state, name) == 1) { + lua_pop(state, 1); return true; }