From 1d9bc2352538bbe4ee0a2b281da95fe9f5015f02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Guilloux?= Date: Sun, 18 Jun 2023 12:03:59 +0200 Subject: [PATCH] Fix #10868: [Script] Handle errors when loading savegame data on stack (#11029) --- src/script/script_instance.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/script/script_instance.cpp b/src/script/script_instance.cpp index 71365850f4..ab0adfb34d 100644 --- a/src/script/script_instance.cpp +++ b/src/script/script_instance.cpp @@ -694,9 +694,16 @@ void ScriptInstance::LoadOnStack(ScriptData *data) ScriptDataVariant version = data->front(); data->pop_front(); - sq_pushinteger(vm, std::get(version)); - LoadObjects(vm, data); - this->is_save_data_on_stack = true; + SQInteger top = sq_gettop(vm); + try { + sq_pushinteger(vm, std::get(version)); + LoadObjects(vm, data); + this->is_save_data_on_stack = true; + } catch (Script_FatalError &e) { + ScriptLog::Warning(fmt::format("Loading failed: {}", e.GetErrorMessage())); + /* Discard partially loaded savegame data and version. */ + sq_settop(vm, top); + } } bool ScriptInstance::CallLoad()