1
0
mirror of https://github.com/OpenTTD/OpenTTD.git synced 2025-08-27 16:39:09 +00:00

Fix #10868: [Script] Handle errors when loading savegame data on stack (#11029)

This commit is contained in:
Loïc Guilloux
2023-06-18 12:03:59 +02:00
committed by GitHub
parent 381e8b69d2
commit 1d9bc23525

View File

@@ -694,9 +694,16 @@ void ScriptInstance::LoadOnStack(ScriptData *data)
ScriptDataVariant version = data->front();
data->pop_front();
sq_pushinteger(vm, std::get<SQInteger>(version));
LoadObjects(vm, data);
this->is_save_data_on_stack = true;
SQInteger top = sq_gettop(vm);
try {
sq_pushinteger(vm, std::get<SQInteger>(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()