# HG changeset patch # User rubidium # Date 2010-12-31 15:53:46 # Node ID 30f3bc1c6966521eb5d9b1538982547db09a68e7 # Parent dfc43ce14a8cfac45bce0a62a07bba9ef128da8a (svn r21679) -Fix (r21642): reading a just freed variable diff --git a/src/vehicle.cpp b/src/vehicle.cpp --- a/src/vehicle.cpp +++ b/src/vehicle.cpp @@ -1747,9 +1747,10 @@ void Vehicle::BeginLoading() current_order.MakeLoading(true); UpdateVehicleTimetable(this, true); - for (Order *order = this->GetOrder(this->cur_order_index); - order != NULL && order->IsType(OT_AUTOMATIC); - order = order->next) { + 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); }