From e0440b263ebd14353c4aff8dc214e760a882a365 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Wed, 8 Jan 2025 19:15:58 +0300 Subject: [PATCH] fix world deletion & fix segfault on attempt to reset content when world is open --- src/logic/EngineController.cpp | 3 ++- src/logic/scripting/lua/libs/libcore.cpp | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/logic/EngineController.cpp b/src/logic/EngineController.cpp index 615e26eb..5f676b39 100644 --- a/src/logic/EngineController.cpp +++ b/src/logic/EngineController.cpp @@ -34,9 +34,10 @@ EngineController::EngineController(Engine& engine) : engine(engine) { void EngineController::deleteWorld(const std::string& name) { fs::path folder = engine.getPaths().getWorldFolderByName(name); - auto deletion = [&]() { + auto deletion = [this, folder]() { logger.info() << "deleting " << folder; fs::remove_all(folder); + engine.getGUI()->getMenu()->back(); }; if (engine.isHeadless()) { diff --git a/src/logic/scripting/lua/libs/libcore.cpp b/src/logic/scripting/lua/libs/libcore.cpp index d291a77f..80a924c5 100644 --- a/src/logic/scripting/lua/libs/libcore.cpp +++ b/src/logic/scripting/lua/libs/libcore.cpp @@ -36,6 +36,9 @@ static int l_load_content(lua::State* L) { } static int l_reset_content(lua::State* L) { + if (level != nullptr) { + throw std::runtime_error("world must be closed before"); + } engine->resetContent(); return 0; }