summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/station_cmd.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/station_cmd.cpp b/src/station_cmd.cpp
index 502ba15e5..ae2ba9588 100644
--- a/src/station_cmd.cpp
+++ b/src/station_cmd.cpp
@@ -4173,8 +4173,13 @@ void FlowStatMap::FinalizeLocalConsumption(StationID self)
for (FlowStatMap::iterator i = this->begin(); i != this->end(); ++i) {
FlowStat &fs = i->second;
uint local = fs.GetShare(INVALID_STATION);
- fs.ChangeShare(self, -local);
- fs.ChangeShare(INVALID_STATION, -local);
+ if (local > INT_MAX) { // make sure it fits in an int
+ fs.ChangeShare(self, -INT_MAX);
+ fs.ChangeShare(INVALID_STATION, -INT_MAX);
+ local -= INT_MAX;
+ }
+ fs.ChangeShare(self, (int)-local);
+ fs.ChangeShare(INVALID_STATION, (int)-local);
/* If the local share is used up there must be a share for some
* remote station. */