From 3902230fa198ef2b03f2f74013e223af77e5d4ec Mon Sep 17 00:00:00 2001 From: Chris Miles Date: Mon, 3 Mar 2025 00:04:39 -0600 Subject: [PATCH] [Crash] Fix world repop crash (#4742) --- world/zonelist.cpp | 3 ++- zone/worldserver.cpp | 14 +++++++++----- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/world/zonelist.cpp b/world/zonelist.cpp index f8d54113c..fdf8dcf39 100644 --- a/world/zonelist.cpp +++ b/world/zonelist.cpp @@ -894,7 +894,8 @@ void ZSList::SendServerReload(ServerReload::Type type, uchar *packet) ServerReload::Type::Commands, ServerReload::Type::PerlExportSettings, ServerReload::Type::DataBucketsCache, - ServerReload::Type::WorldRepop + ServerReload::Type::WorldRepop, + ServerReload::Type::WorldWithRespawn }; // Set requires_zone_booted flag before executing reload logic diff --git a/zone/worldserver.cpp b/zone/worldserver.cpp index 9c0950b47..fc34e3f18 100644 --- a/zone/worldserver.cpp +++ b/zone/worldserver.cpp @@ -4661,16 +4661,20 @@ void WorldServer::ProcessReload(const ServerReload::Request& request) break; case ServerReload::Type::WorldRepop: - entity_list.ClearAreas(); parse->ReloadQuests(); - zone->Repop(); + if (zone && zone->IsLoaded()) { + entity_list.ClearAreas(); + zone->Repop(); + } break; case ServerReload::Type::WorldWithRespawn: - entity_list.ClearAreas(); parse->ReloadQuests(); - zone->Repop(); - zone->ClearSpawnTimers(); + if (zone && zone->IsLoaded()) { + entity_list.ClearAreas(); + zone->Repop(); + zone->ClearSpawnTimers(); + } break; case ServerReload::Type::ZonePoints: