# HG changeset patch # User Loïc Guilloux # Date 2024-02-20 17:55:18 # Node ID 5622964c1375df1c8b0f4595565fb3bee15df162 # Parent 1f0e3e5e39e076791480653fdb97b3d349ba612e Fix #12133: [Script] Don't crash when emergency saving (#12138) diff --git a/src/ai/ai_core.cpp b/src/ai/ai_core.cpp --- a/src/ai/ai_core.cpp +++ b/src/ai/ai_core.cpp @@ -285,14 +285,18 @@ { if (!_networking || _network_server) { Company *c = Company::GetIfValid(company); - assert(c != nullptr && c->ai_instance != nullptr); + assert(c != nullptr); - Backup cur_company(_current_company, company, FILE_LINE); - c->ai_instance->Save(); - cur_company.Restore(); - } else { - AIInstance::SaveEmpty(); + /* When doing emergency saving, an AI can be not fully initialised. */ + if (c->ai_instance != nullptr) { + Backup cur_company(_current_company, company, FILE_LINE); + c->ai_instance->Save(); + cur_company.Restore(); + return; + } } + + AIInstance::SaveEmpty(); } /* static */ void AI::GetConsoleList(std::back_insert_iterator &output_iterator, bool newest_only)