src/economy.cpp
changeset 7372 c254cca76042
parent 7353 716c6dd9322a
child 7375 e8639f73a615
--- a/src/economy.cpp	Tue Jun 12 15:46:34 2007 +0000
+++ b/src/economy.cpp	Tue Jun 12 17:10:52 2007 +0000
@@ -355,7 +355,30 @@
 					DeleteWindowById(WC_VEHICLE_VIEW, v->index);
 					DeleteWindowById(WC_VEHICLE_DETAILS, v->index);
 					DeleteWindowById(WC_VEHICLE_ORDERS, v->index);
-					DeleteVehicle(v);
+
+					if (v->IsPrimaryVehicle() || (v->type == VEH_TRAIN && IsFreeWagon(v))) {
+						switch (v->type) {
+							default: NOT_REACHED();
+
+							case VEH_TRAIN: {
+								Vehicle *u = v;
+								do {
+									Vehicle *next = GetNextVehicle(u);
+									DeleteVehicle(u);
+									u = next;
+								} while (u != NULL);
+							} break;
+
+							case VEH_ROAD:
+							case VEH_SHIP:
+								DeleteVehicle(v);
+								break;
+
+							case VEH_AIRCRAFT:
+								DeleteVehicleChain(v);
+								break;
+						}
+					}
 				} else {
 					v->owner = new_player;
 					v->group_id = DEFAULT_GROUP;