From c85022e3db070ba96b9392921f5648453b67b874 Mon Sep 17 00:00:00 2001 From: truelight Date: Sat, 24 Mar 2007 15:16:41 +0000 Subject: [PATCH] (svn r9430) [0.5] -Backport r9429: when deleting a vehicle which has shared orders with one more vehicle and no orders, segfaulted --- order_cmd.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/order_cmd.c b/order_cmd.c index 612f3e465f..54c1aff1de 100644 --- a/order_cmd.c +++ b/order_cmd.c @@ -463,6 +463,8 @@ static void RemoveSharedOrderVehicleList(Vehicle *v) { WindowClass window_class; + assert(v->orders != NULL); + switch (v->type) { default: NOT_REACHED(); case VEH_Train: window_class = WC_TRAINS_LIST; break; @@ -1161,7 +1163,7 @@ void DeleteVehicleOrders(Vehicle *v) /* If we are the only one left in the Shared Order Vehicle List, * remove it, as we are no longer a Shared Order Vehicle */ - if (u->prev_shared == NULL && u->next_shared == NULL) RemoveSharedOrderVehicleList(u); + if (u->prev_shared == NULL && u->next_shared == NULL && u->orders != NULL) RemoveSharedOrderVehicleList(u); /* We only need to update this-one, because if there is a third * vehicle which shares the same order-list, nothing will change. If