Fixed broken arithmetic expression parser.

Reminded by:	bde
In memory of:	alane
This commit is contained in:
Ruslan Ermilov 2003-07-04 13:33:48 +00:00
parent a5d841d4ce
commit c94d70434f
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=117226
3 changed files with 26 additions and 5 deletions

View File

@ -41,6 +41,9 @@ all:
@echo "Running test funny_targets"
@${MAKE} funny_targets || ${MAKE} failure
@echo "PASS: Test funny_targets detected no regression."
@echo "Running test arith_expr"
@${MAKE} arith_expr || ${MAKE} failure
@echo "PASS: Test arith_expr detected no regression."
.if make(double)
# Doubly-defined targets. make(1) will warn, but use the "right" one. If it
@ -90,6 +93,15 @@ colons::target:
exclamation!target:
.endif
.if make(arith_expr)
arith_expr:
# See if arithmetic expression parsing is broken.
# The different spacing below is intentional.
VALUE= 0
.if (${VALUE} < 0)||(${VALUE}>0)
.endif
.endif
failure:
@echo "FAIL: Test failed: regression detected. See above."
@false

View File

@ -41,6 +41,9 @@ all:
@echo "Running test funny_targets"
@${MAKE} funny_targets || ${MAKE} failure
@echo "PASS: Test funny_targets detected no regression."
@echo "Running test arith_expr"
@${MAKE} arith_expr || ${MAKE} failure
@echo "PASS: Test arith_expr detected no regression."
.if make(double)
# Doubly-defined targets. make(1) will warn, but use the "right" one. If it
@ -90,6 +93,15 @@ colons::target:
exclamation!target:
.endif
.if make(arith_expr)
arith_expr:
# See if arithmetic expression parsing is broken.
# The different spacing below is intentional.
VALUE= 0
.if (${VALUE} < 0)||(${VALUE}>0)
.endif
.endif
failure:
@echo "FAIL: Test failed: regression detected. See above."
@false

View File

@ -688,16 +688,13 @@ CondToken(Boolean doEval)
}
} else {
char *c = CondCvtArg(rhs, &right);
if (*c != '\0' && !isspace((unsigned char) *c))
if (c == rhs)
goto do_string_compare;
if (rhs == condExpr) {
/*
* Skip over the right-hand side
*/
while(!isspace((unsigned char) *condExpr) &&
(*condExpr != '\0')) {
condExpr++;
}
condExpr = c;
}
}