From 469c448eb0a596e37f2d365cf16ce16ebc3a58a7 Mon Sep 17 00:00:00 2001 From: smatz Date: Sat, 5 Mar 2011 13:59:23 +0000 Subject: [PATCH] (svn r22200) -Fix (r21642): removing a station order could stop when removing first automatic order --- src/order_cmd.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/order_cmd.cpp b/src/order_cmd.cpp index f8a5530246..4441a782b8 100644 --- a/src/order_cmd.cpp +++ b/src/order_cmd.cpp @@ -1638,6 +1638,7 @@ void RemoveOrderFromAllVehicles(OrderType type, DestinationID destination) int id = -1; FOR_VEHICLE_ORDERS(v, order) { id++; +restart: OrderType ot = order->GetType(); if (ot == OT_GOTO_DEPOT && (order->GetDepotActionType() & ODATFB_NEAREST_DEPOT) != 0) continue; @@ -1647,9 +1648,10 @@ void RemoveOrderFromAllVehicles(OrderType type, DestinationID destination) * dummy orders. They should just vanish. Also check the actual order * type as ot is currently OT_GOTO_STATION. */ if (order->IsType(OT_AUTOMATIC)) { + order = order->next; // DeleteOrder() invalidates current order DeleteOrder(v, id); - id--; - continue; + if (order != NULL) goto restart; + break; } order->MakeDummy();