diff --git a/src/unit/unit.cpp b/src/unit/unit.cpp
index ef3cb53b7..3d2d64211 100644
--- a/src/unit/unit.cpp
+++ b/src/unit/unit.cpp
@@ -538,6 +538,19 @@ void CUnit::Release(bool final)
 	}
 	Orders.clear();
 
+	if (SavedOrder != NULL) {
+		delete SavedOrder;
+		SavedOrder = NULL;
+	}
+	if (NewOrder != NULL) {
+		delete NewOrder;
+		NewOrder = NULL;
+	}
+	if (CriticalOrder != NULL) {
+		delete CriticalOrder;
+		CriticalOrder = NULL;
+	}
+
 	// Remove the unit from the global units table.
 	UnitManager.ReleaseUnit(this);
 }