Module Name: src Committed By: rillig Date: Wed Sep 30 05:58:22 UTC 2020
Modified Files: src/usr.bin/make: var.c src/usr.bin/make/unit-tests: vardebug.exp varmod-l-name-to-value.exp Log Message: make(1): fix bug in evaluation of indirect variable modifiers Since 2020-09-22, when indirect variable modifiers were applied to a variable expression based on an undefined variable, these modifiers did not change the state of a variable expression from undefined to defined. The modifiers that do this are :D, :U, :L, :P. Minimal example: ${VARNAME:${:UL}} The :L modifier from the inner expression sets the value of the outer expression to its variable name, in this case "VARNAME". The outer expression was not marked as being defined though, which resulted in a "Malformed conditional" error. In the commit from 2020-09-22, vardebug.exp had changed a lot, and I had not inspected the change closely. The important detail was in lines 56 and 60, where VAR_JUNK|VAR_KEEP changed into VEF_UNDEF, thereby losing the VEF_DEF bit. To generate a diff of this commit: cvs rdiff -u -r1.553 -r1.554 src/usr.bin/make/var.c cvs rdiff -u -r1.8 -r1.9 src/usr.bin/make/unit-tests/vardebug.exp cvs rdiff -u -r1.2 -r1.3 \ src/usr.bin/make/unit-tests/varmod-l-name-to-value.exp Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.