Fix melting of big piles of stuff by ridiculously heavy fallout

meltitems() computes #items * etus per update * fallout in type long.
Theoretical maximum is ITEM_MAX * etus * FALLOUT_MAX = 99980001 *
etus.  Can overflow 32 bits for etus > 21.  Has been broken since the
introduction of fallout in KSU.

Compute the product in double instead.
This commit is contained in:
Markus Armbruster 2013-01-13 17:17:44 +01:00
parent 24408e65b4
commit 5ed02791f5

View file

@ -159,7 +159,7 @@ meltitems(int etus, int fallout, int own, short *vec,
int melt;
for (n = I_NONE + 1; n <= I_MAX; n++) {
melt = roundavg(vec[n] * etus * (long)fallout
melt = roundavg(vec[n] * etus * (double)fallout
/ (1000.0 * ichr[n].i_melt_denom));
if (melt > vec[n])
melt = vec[n];