Skip to content

Commit c46586c

Browse files
James CraigJames Craig
authored andcommitted
minor bug with negative numbers in expression
1 parent 897626c commit c46586c

File tree

1 file changed

+3
-1
lines changed

1 file changed

+3
-1
lines changed

src/DemandExpressionHandling.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -750,13 +750,15 @@ expressionStruct *CDemandOptimizer::ParseExpression(const char **s,
750750
int termspergrp[MAX_EXP_GROUPS];
751751
comparison comp=COMPARE_BETWEEN;
752752
int nComps=0;
753+
size_t strlen;
753754

754755
//identify all strings as either operators or terms
755756
//determine nature of comparison =,<,>
756757
for (int i = 1; i < Len; i++) //starts at 1 - first term is :Expression or :DefineDecisionVariable
757758
{
759+
strlen=to_string(s[i]).length();
758760
type[i]=EXP;
759-
if ((s[i][0]=='+') || (s[i][0]=='-') || (s[i][0]=='*') || (s[i][0]=='/') || (s[i][0]=='=') || (s[i][0]=='<') || (s[i][0]=='>')){
761+
if ((s[i][0]=='+') || ((strlen==1) && (s[i][0]=='-')) || (s[i][0]=='*') || (s[i][0]=='/') || (s[i][0]=='=') || (s[i][0]=='<') || (s[i][0]=='>')){
760762
type[i] = EXP_OP;
761763
if ((i > 1) && (type[i - 1] == EXP_OP)) {
762764
ExitGracefully("ParseExpression: cannot have consecutive math operators in an expression.",BAD_DATA_WARN);

0 commit comments

Comments
 (0)