aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tools/build/make_check/Makefile12
-rw-r--r--tools/regression/usr.bin/make/Makefile12
-rw-r--r--usr.bin/make/cond.c7
3 files changed, 26 insertions, 5 deletions
diff --git a/tools/build/make_check/Makefile b/tools/build/make_check/Makefile
index 0ae687e51c09c..bf26b446a83e2 100644
--- a/tools/build/make_check/Makefile
+++ b/tools/build/make_check/Makefile
@@ -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
diff --git a/tools/regression/usr.bin/make/Makefile b/tools/regression/usr.bin/make/Makefile
index 0ae687e51c09c..bf26b446a83e2 100644
--- a/tools/regression/usr.bin/make/Makefile
+++ b/tools/regression/usr.bin/make/Makefile
@@ -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
diff --git a/usr.bin/make/cond.c b/usr.bin/make/cond.c
index 6f82ecbee3ea1..8eab811f6317c 100644
--- a/usr.bin/make/cond.c
+++ b/usr.bin/make/cond.c
@@ -688,16 +688,13 @@ do_string_compare:
}
} 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;
}
}