diff --git a/src/vehicle.cpp b/src/vehicle.cpp --- a/src/vehicle.cpp +++ b/src/vehicle.cpp @@ -1736,6 +1736,18 @@ uint GetVehicleCapacity(const Vehicle *v return capacity; } +/** + * Delete all automatic orders which were not reached. + */ +void Vehicle::DeleteUnreachedAutoOrders() +{ + const Order *order = this->GetOrder(this->cur_order_index); + while (order != NULL && order->IsType(OT_AUTOMATIC)) { + /* Delete order effectively deletes order, so get the next before deleting it. */ + order = order->next; + DeleteOrder(this, this->cur_order_index); + } +} void Vehicle::BeginLoading() { @@ -1743,13 +1755,7 @@ void Vehicle::BeginLoading() if (this->current_order.IsType(OT_GOTO_STATION) && this->current_order.GetDestination() == this->last_station_visited) { - /* Delete all automatic orders which were not reached */ - const Order *order = this->GetOrder(this->cur_order_index); - while (order != NULL && order->IsType(OT_AUTOMATIC)) { - /* Delete order effectively deletes order, so get the next before deleting it. */ - order = order->next; - DeleteOrder(this, this->cur_order_index); - } + this->DeleteUnreachedAutoOrders(); /* Now cur_order_index points to the destination station, and we can start loading */ this->current_order.MakeLoading(true);