diff --git a/src/ai/ai_core.cpp b/src/ai/ai_core.cpp index 4d878b2905..64a16758d1 100644 --- a/src/ai/ai_core.cpp +++ b/src/ai/ai_core.cpp @@ -82,18 +82,16 @@ PerformanceMeasurer framerate((PerformanceElement)(PFE_AI0 + c->index)); cur_company.Change(c->index); c->ai_instance->GameLoop(); + /* Occasionally collect garbage; every 255 ticks do one company. + * Effectively collecting garbage once every two months per AI. */ + if ((AI::frame_counter & 255) == 0 && (CompanyID)GB(AI::frame_counter, 8, 4) == c->index) { + c->ai_instance->CollectGarbage(); + } } else { PerformanceMeasurer::SetInactive((PerformanceElement)(PFE_AI0 + c->index)); } } cur_company.Restore(); - - /* Occasionally collect garbage; every 255 ticks do one company. - * Effectively collecting garbage once every two months per AI. */ - if ((AI::frame_counter & 255) == 0) { - CompanyID cid = (CompanyID)GB(AI::frame_counter, 8, 4); - if (Company::IsValidAiID(cid)) Company::Get(cid)->ai_instance->CollectGarbage(); - } } /* static */ uint AI::GetTick()