diff --git a/src/unit/unit.cpp b/src/unit/unit.cpp index ea5010813..08c4aeb58 100644 --- a/src/unit/unit.cpp +++ b/src/unit/unit.cpp @@ -553,21 +553,26 @@ void CUnit::Release(bool final) // removed, but fog of war calculations are still underway, where we want to // read a BoolFlag; there are more instances of this...) for (std::vector<COrder *>::iterator order = Orders.begin(); order != Orders.end(); ++order) { - delete *order; + COrder *orderToDelete = *order; + *order = NULL; + delete orderToDelete; } Orders.clear(); if (SavedOrder != NULL) { - delete SavedOrder; + COrder *order = SavedOrder; SavedOrder = NULL; + delete order; } if (NewOrder != NULL) { - delete NewOrder; + COrder *order = NewOrder; NewOrder = NULL; + delete order; } if (CriticalOrder != NULL) { - delete CriticalOrder; + COrder *order = CriticalOrder; CriticalOrder = NULL; + delete order; } // Remove the unit from the global units table.