diff options
-rw-r--r-- | src/linkgraph/flowmapper.cpp | 6 | ||||
-rw-r--r-- | src/station_cmd.cpp | 2 |
2 files changed, 6 insertions, 2 deletions
diff --git a/src/linkgraph/flowmapper.cpp b/src/linkgraph/flowmapper.cpp index 79e0f09f3..3daab4414 100644 --- a/src/linkgraph/flowmapper.cpp +++ b/src/linkgraph/flowmapper.cpp @@ -49,8 +49,10 @@ void FlowMapper::Run(LinkGraphJob &job) const FlowStatMap &flows = node.Flows(); flows.FinalizeLocalConsumption(node.Station()); if (this->scale) { - /* Scale by time the graph has been running without being compressed. */ - uint runtime = job.JoinDate() - job.Settings().recalc_time - job.LastCompression(); + /* Scale by time the graph has been running without being compressed. Add 1 to avoid + * division by 0 if spawn date == last compression date. This matches + * LinkGraph::Monthly(). */ + uint runtime = job.JoinDate() - job.Settings().recalc_time - job.LastCompression() + 1; for (FlowStatMap::iterator i = flows.begin(); i != flows.end(); ++i) { i->second.ScaleToMonthly(runtime); } diff --git a/src/station_cmd.cpp b/src/station_cmd.cpp index 55b6fae14..d637d83c3 100644 --- a/src/station_cmd.cpp +++ b/src/station_cmd.cpp @@ -4314,9 +4314,11 @@ void FlowStat::ReleaseShare(StationID st) /** * Scale all shares from link graph's runtime to monthly values. * @param runtime Time the link graph has been running without compression. + * @pre runtime must be greater than 0 as we don't want infinite flow values. */ void FlowStat::ScaleToMonthly(uint runtime) { + assert(runtime > 0); SharesMap new_shares; uint share = 0; for (SharesMap::iterator i = this->shares.begin(); i != this->shares.end(); ++i) { |