From 70794644ccc1a295f0fd067441d1cfd02b8b2a46 Mon Sep 17 00:00:00 2001 From: Jonathan G Rennison Date: Fri, 21 Feb 2020 08:18:14 +0000 Subject: [PATCH] Fix crash in distributing residual cargo in MoveGoodsToStation --- src/station_cmd.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/station_cmd.cpp b/src/station_cmd.cpp index bf4a0c4196..ab0d387207 100644 --- a/src/station_cmd.cpp +++ b/src/station_cmd.cpp @@ -4349,9 +4349,12 @@ uint MoveGoodsToStation(CargoID type, uint amount, SourceType source_type, Sourc return b.first->goods[type].rating < a.first->goods[type].rating; }); - assert(amount - moving <= used_stations.size()); - for (uint i = 0; i < amount - moving; i++) { - used_stations[i].second++; + uint to_deliver = amount - moving; + uint step_size = CeilDivT(to_deliver, used_stations.size()); + for (uint i = 0; i < used_stations.size() && to_deliver > 0; i++) { + uint delivery = min(to_deliver, step_size); + used_stations[i].second += delivery; + to_deliver -= delivery; } }