Fixes problem with findpattern() function (issue #498)
This commit is contained in:
16
src/input3.c
16
src/input3.c
@@ -7,7 +7,7 @@ Description: parses network data from a line of an EPANET input file
|
|||||||
Authors: see AUTHORS
|
Authors: see AUTHORS
|
||||||
Copyright: see AUTHORS
|
Copyright: see AUTHORS
|
||||||
License: see LICENSE
|
License: see LICENSE
|
||||||
Last Updated: 05/15/2019
|
Last Updated: 05/24/2019
|
||||||
******************************************************************************
|
******************************************************************************
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -95,7 +95,7 @@ int juncdata(Project *pr)
|
|||||||
if (n >= 4)
|
if (n >= 4)
|
||||||
{
|
{
|
||||||
p = findpattern(net, parser->Tok[3]);
|
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
|
// Save junction data
|
||||||
@@ -170,7 +170,7 @@ int tankdata(Project *pr)
|
|||||||
if (n == 3)
|
if (n == 3)
|
||||||
{
|
{
|
||||||
pattern = findpattern(net, parser->Tok[2]);
|
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;
|
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
|
else if (match(parser->Tok[m - 1], w_PATTERN)) // Speed/status pattern
|
||||||
{
|
{
|
||||||
p = findpattern(net, parser->Tok[m]);
|
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;
|
pump->Upat = p;
|
||||||
}
|
}
|
||||||
else if (match(parser->Tok[m - 1], w_SPEED)) // Speed setting
|
else if (match(parser->Tok[m - 1], w_SPEED)) // Speed setting
|
||||||
@@ -557,7 +557,7 @@ int patterndata(Project *pr)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
i = findpattern(net, parser->Tok[0]);
|
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]);
|
pattern = &(net->Pattern[i]);
|
||||||
if (pattern->Comment == NULL && parser->Comment[0])
|
if (pattern->Comment == NULL && parser->Comment[0])
|
||||||
{
|
{
|
||||||
@@ -718,7 +718,7 @@ int demanddata(Project *pr)
|
|||||||
if (n >= 3)
|
if (n >= 3)
|
||||||
{
|
{
|
||||||
p = findpattern(net, parser->Tok[2]);
|
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
|
// Replace any demand entered in [JUNCTIONS] section
|
||||||
@@ -904,7 +904,7 @@ int sourcedata(Project *pr)
|
|||||||
strcmp(parser->Tok[i + 1], "*") != 0)
|
strcmp(parser->Tok[i + 1], "*") != 0)
|
||||||
{
|
{
|
||||||
p = findpattern(net, parser->Tok[i + 1]);
|
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
|
// Destroy any existing source assigned to node
|
||||||
@@ -1358,7 +1358,7 @@ int energydata(Project *pr)
|
|||||||
else if (match(parser->Tok[n - 2], w_PATTERN))
|
else if (match(parser->Tok[n - 2], w_PATTERN))
|
||||||
{
|
{
|
||||||
p = findpattern(net, parser->Tok[n - 1]);
|
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;
|
if (j == 0) hyd->Epat = p;
|
||||||
else Pump[j].Epat = p;
|
else Pump[j].Epat = p;
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
Authors: see AUTHORS
|
Authors: see AUTHORS
|
||||||
Copyright: see AUTHORS
|
Copyright: see AUTHORS
|
||||||
License: see LICENSE
|
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
|
** Input: id = time pattern ID
|
||||||
** Output: none
|
** 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
|
** Purpose: finds index of time pattern given its ID
|
||||||
**----------------------------------------------------------------
|
**----------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
{
|
{
|
||||||
int i;
|
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;
|
if (strcmp(id, network->Pattern[i].ID) == 0) return i;
|
||||||
}
|
}
|
||||||
return 0;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int findcurve(Network *network, char *id)
|
int findcurve(Network *network, char *id)
|
||||||
|
|||||||
Reference in New Issue
Block a user