Fixes problem with findpattern() function (issue #498)

This commit is contained in:
Lew Rossman
2019-05-24 10:33:36 -04:00
parent e4e6d49f52
commit 40c39fd3c6
2 changed files with 14 additions and 12 deletions

View File

@@ -7,7 +7,7 @@ Description: parses network data from a line of an EPANET input file
Authors: see AUTHORS
Copyright: see AUTHORS
License: see LICENSE
Last Updated: 05/15/2019
Last Updated: 05/24/2019
******************************************************************************
*/
@@ -95,7 +95,7 @@ int juncdata(Project *pr)
if (n >= 4)
{
p = findpattern(net, parser->Tok[3]);
if (p == 0) return setError(parser, 3, 205);
if (p < 0) return setError(parser, 3, 205);
}
// Save junction data
@@ -170,7 +170,7 @@ int tankdata(Project *pr)
if (n == 3)
{
pattern = findpattern(net, parser->Tok[2]);
if (pattern == 0) return setError(parser, 2, 205);
if (pattern < 0) return setError(parser, 2, 205);
}
}
else if (n < 6) return 201;
@@ -420,7 +420,7 @@ int pumpdata(Project *pr)
else if (match(parser->Tok[m - 1], w_PATTERN)) // Speed/status pattern
{
p = findpattern(net, parser->Tok[m]);
if (p == 0) return setError(parser, m, 205);
if (p < 0) return setError(parser, m, 205);
pump->Upat = p;
}
else if (match(parser->Tok[m - 1], w_SPEED)) // Speed setting
@@ -557,7 +557,7 @@ int patterndata(Project *pr)
else
{
i = findpattern(net, parser->Tok[0]);
if (i == 0) return setError(parser, 0, 205);
if (i <= 0) return setError(parser, 0, 205);
pattern = &(net->Pattern[i]);
if (pattern->Comment == NULL && parser->Comment[0])
{
@@ -718,7 +718,7 @@ int demanddata(Project *pr)
if (n >= 3)
{
p = findpattern(net, parser->Tok[2]);
if (p == 0) return setError(parser, 2, 205);
if (p < 0) return setError(parser, 2, 205);
}
// Replace any demand entered in [JUNCTIONS] section
@@ -904,7 +904,7 @@ int sourcedata(Project *pr)
strcmp(parser->Tok[i + 1], "*") != 0)
{
p = findpattern(net, parser->Tok[i + 1]);
if (p == 0) return setError(parser, i + 1, 205);
if (p < 0) return setError(parser, i + 1, 205);
}
// Destroy any existing source assigned to node
@@ -1358,7 +1358,7 @@ int energydata(Project *pr)
else if (match(parser->Tok[n - 2], w_PATTERN))
{
p = findpattern(net, parser->Tok[n - 1]);
if (p == 0) return setError(parser, n - 1, 205);
if (p < 0) return setError(parser, n - 1, 205);
if (j == 0) hyd->Epat = p;
else Pump[j].Epat = p;
return 0;

View File

@@ -7,7 +7,7 @@
Authors: see AUTHORS
Copyright: see AUTHORS
License: see LICENSE
Last Updated: 05/15/2019
Last Updated: 05/24/2019
******************************************************************************
*/
@@ -815,17 +815,19 @@ int findpattern(Network *network, char *id)
/*----------------------------------------------------------------
** Input: id = time pattern ID
** Output: none
** Returns: time pattern index, or 0 if pattern not found
** Returns: time pattern index, or -1 if pattern not found
** Purpose: finds index of time pattern given its ID
**----------------------------------------------------------------
*/
{
int i;
for (i = 1; i <= network->Npats; i++)
// Don't forget to include the "dummy" pattern 0 in the search
for (i = 0; i <= network->Npats; i++)
{
if (strcmp(id, network->Pattern[i].ID) == 0) return i;
}
return 0;
return -1;
}
int findcurve(Network *network, char *id)