diff options
-rw-r--r-- | src/order_cmd.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/order_cmd.cpp b/src/order_cmd.cpp index f8a553024..4441a782b 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(); |