mirror of https://github.com/OpenTTD/OpenTTD
Fix: multiplication result converted to larger type
Technically unlikely to happen, though uint16 * uint16 get promoted to int and then stored as uint64; similarly uint * uint16 remains uint and gets stored as uint64. In both cases the value can get truncated before the change to uint64.pull/10719/head
parent
4894da67da
commit
4a6fdc8293
|
@ -180,7 +180,7 @@ void CargoList<Tinst, Tcont>::RemoveFromCache(const CargoPacket *cp, uint count)
|
||||||
{
|
{
|
||||||
assert(count <= cp->count);
|
assert(count <= cp->count);
|
||||||
this->count -= count;
|
this->count -= count;
|
||||||
this->cargo_days_in_transit -= cp->days_in_transit * count;
|
this->cargo_days_in_transit -= static_cast<uint64_t>(cp->days_in_transit) * count;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -192,7 +192,7 @@ template <class Tinst, class Tcont>
|
||||||
void CargoList<Tinst, Tcont>::AddToCache(const CargoPacket *cp)
|
void CargoList<Tinst, Tcont>::AddToCache(const CargoPacket *cp)
|
||||||
{
|
{
|
||||||
this->count += cp->count;
|
this->count += cp->count;
|
||||||
this->cargo_days_in_transit += cp->days_in_transit * cp->count;
|
this->cargo_days_in_transit += static_cast<uint64_t>(cp->days_in_transit) * cp->count;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Invalidates the cached data and rebuilds it. */
|
/** Invalidates the cached data and rebuilds it. */
|
||||||
|
|
Loading…
Reference in New Issue