diff --git a/src/network/network_server.cpp b/src/network/network_server.cpp index d465078a75..7e870d1c3d 100644 --- a/src/network/network_server.cpp +++ b/src/network/network_server.cpp @@ -178,14 +178,18 @@ ServerNetworkGameSocketHandler::~ServerNetworkGameSocketHandler() OrderBackup::ResetUser(this->client_id); if (this->savegame_mutex != NULL) this->savegame_mutex->BeginCritical(); - delete this->savegame_packets; if (this->savegame != NULL) this->savegame->cs = NULL; - if (this->savegame_mutex != NULL) this->savegame_mutex->EndCritical(); /* Make sure the saving is completely cancelled. */ if (this->savegame != NULL) WaitTillSaved(); + while (this->savegame_packets != NULL) { + Packet *p = this->savegame_packets->next; + delete this->savegame_packets; + this->savegame_packets = p; + } + delete this->savegame_mutex; }