summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/linkgraph/flowmapper.cpp6
-rw-r--r--src/station_cmd.cpp2
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) {