From 611f6bdbeab7778e3df4e0e6c296fb6e21dafb18 Mon Sep 17 00:00:00 2001 From: Marcus Tillmanns Date: Wed, 19 Jun 2024 18:53:39 +0200 Subject: [PATCH] Lua: Don't destroy lua state too early The Lua state needs to stay alive as long as any references to it may be alive. Therefore this patch leaves the destruction to the end. Fixes: QTCREATORBUG-31087 Change-Id: Ic49723575f7d2fe474cba9546845b65d57d7dcd0 Reviewed-by: Eike Ziller --- src/plugins/lua/luaengine.h | 2 +- src/plugins/lua/luapluginspec.cpp | 7 ++----- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/src/plugins/lua/luaengine.h b/src/plugins/lua/luaengine.h index f8fa085d6d0..7c8bbda7c89 100644 --- a/src/plugins/lua/luaengine.h +++ b/src/plugins/lua/luaengine.h @@ -51,7 +51,7 @@ protected: public: using PackageProvider = std::function; - ~LuaEngine(); + ~LuaEngine() override; static LuaEngine &instance(); Utils::expected_str loadPlugin(const Utils::FilePath &path); diff --git a/src/plugins/lua/luapluginspec.cpp b/src/plugins/lua/luapluginspec.cpp index 4d0e9d76708..3e6b1eb3edd 100644 --- a/src/plugins/lua/luapluginspec.cpp +++ b/src/plugins/lua/luapluginspec.cpp @@ -144,14 +144,11 @@ bool LuaPluginSpec::delayedInitialize() } ExtensionSystem::IPlugin::ShutdownFlag LuaPluginSpec::stop() { - d->activeLuaState.reset(); + d->activeLuaState->stack_clear(); return ExtensionSystem::IPlugin::ShutdownFlag::SynchronousShutdown; } -void LuaPluginSpec::kill() -{ - d->activeLuaState.reset(); -} +void LuaPluginSpec::kill() {} bool LuaPluginSpec::printToOutputPane() const {