Fixes possible integer overflow

Fixes a possible integer overflow when computing time for a tank to fill/empty (issue #666 ). Also fixes issue #642 that failed to set a pump's initial setting to 0 when its initial status was CLOSED.
This commit is contained in:
Lew Rossman
2022-03-19 13:25:55 -04:00
parent c8a3eadfdf
commit dbd3f6387d
2 changed files with 7 additions and 4 deletions

View File

@@ -7,7 +7,7 @@
Authors: see AUTHORS
Copyright: see AUTHORS
License: see LICENSE
Last Updated: 02/03/2020
Last Updated: 03/19/2022
******************************************************************************
*/
@@ -668,7 +668,7 @@ int tanktimestep(Project *pr, long *tstep)
Hydraul *hyd = &pr->hydraul;
int i, n, tankIdx = 0;
double h, q, v;
double h, q, v, xt;
long t;
Stank *tank;
@@ -691,7 +691,9 @@ int tanktimestep(Project *pr, long *tstep)
else continue;
// Find time to fill/drain tank
t = (long)ROUND(v / q);
xt = v / q;
if (ABS(xt) > *tstep + 1) continue;
t = (long)ROUND(xt);
if (t > 0 && t < *tstep)
{
*tstep = t;