tech-toolchain archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: toolchain/38315: make: ?= should resolve LHS
While looking at where to fix this I spotted a few other cases
that could bite, so Var_Exists seems the best place to fix;
Index: var.c
===================================================================
RCS file: /cvsroot/src/usr.bin/make/var.c,v
retrieving revision 1.127
diff -u -p -r1.127 var.c
--- var.c 15 Feb 2008 21:29:50 -0000 1.127
+++ var.c 26 Mar 2008 23:20:59 -0000
@@ -876,10 +876,20 @@ Var_Exists(const char *name, GNode *ctxt
v = VarFind(name, ctxt, FIND_CMD|FIND_GLOBAL|FIND_ENV);
if (v == (Var *)NIL) {
+ if (strchr(name, '$') != NULL) {
+ char *cp;
+
+ cp = Var_Subst(NULL, name, ctxt, FALSE);
+ v = VarFind(cp, ctxt, FIND_CMD|FIND_GLOBAL|FIND_ENV);
+ free(cp);
+ if (v != (Var *)NIL) {
+ goto found;
+ }
+ }
return(FALSE);
- } else {
- (void)VarFreeEnv(v, TRUE);
}
+ found:
+ (void)VarFreeEnv(v, TRUE);
return(TRUE);
}
Index: unit-tests/Makefile
===================================================================
RCS file: /cvsroot/src/usr.bin/make/unit-tests/Makefile,v
retrieving revision 1.21
diff -u -p -r1.21 Makefile
--- unit-tests/Makefile 5 Oct 2007 15:27:46 -0000 1.21
+++ unit-tests/Makefile 26 Mar 2008 23:20:59 -0000
@@ -31,6 +31,7 @@ SUBFILES= \
modts \
modword \
posix \
+ qequals \
ternary \
varcmd
Index: unit-tests/qequals
===================================================================
RCS file: unit-tests/qequals
diff -N unit-tests/qequals
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ unit-tests/qequals 26 Mar 2008 23:20:59 -0000
@@ -0,0 +1,8 @@
+# $Id$
+
+M= i386
+V.i386= OK
+V.$M ?= bug
+
+all:
+ @echo 'V.$M ?= ${V.$M}'
Index: unit-tests/test.exp
===================================================================
RCS file: /cvsroot/src/usr.bin/make/unit-tests/test.exp,v
retrieving revision 1.21
diff -u -p -r1.21 test.exp
--- unit-tests/test.exp 9 Oct 2007 05:55:04 -0000 1.21
+++ unit-tests/test.exp 26 Mar 2008 23:20:59 -0000
@@ -286,6 +286,7 @@ a command prefixed by '+' executes even
Now we expect an error...
*** Error code 1 (continuing)
`all' not remade because of errors.
+V.i386 ?= OK
The answer is unknown
The answer is unknown
The answer is empty
Home |
Main Index |
Thread Index |
Old Index