diff options
author | Paul Smith <psmith@gnu.org> | 2016-05-21 13:08:34 -0400 |
---|---|---|
committer | Paul Smith <psmith@gnu.org> | 2016-05-21 16:22:32 -0400 |
commit | e2ebea35f11059e888b2fe2bfc8b24fda48c1f88 (patch) | |
tree | e79a36cc4c885fcad80b240edd878604648bdd2e | |
parent | c73ed7dd1cda65463e9ed8b99bcd4a7d9195d7fa (diff) |
* read.c (eval): [SV 47960] Skip record waiting files when ignoring.
* tests/scripts/features/conditionals: Test this scenario.
-rw-r--r-- | read.c | 6 | ||||
-rw-r--r-- | tests/scripts/features/conditionals | 16 |
2 files changed, 19 insertions, 3 deletions
@@ -724,9 +724,6 @@ eval (struct ebuffer *ebuf, int set_default) struct variable *v; enum variable_origin origin = vmod.override_v ? o_override : o_file; - /* Variable assignment ends the previous rule. */ - record_waiting_files (); - /* If we're ignoring then we're done now. */ if (ignoring) { @@ -735,6 +732,9 @@ eval (struct ebuffer *ebuf, int set_default) continue; } + /* Variable assignment ends the previous rule. */ + record_waiting_files (); + if (vmod.undefine_v) { do_undefine (p, origin, ebuf); diff --git a/tests/scripts/features/conditionals b/tests/scripts/features/conditionals index 2ece60bb..78344b93 100644 --- a/tests/scripts/features/conditionals +++ b/tests/scripts/features/conditionals @@ -141,6 +141,22 @@ all: ; @:', '', 'success'); +# SV 47960 : ensure variable assignments in non-taken legs don't cause problems +run_make_test(' +ifneq ($(FOO),yes) +target: +else +BAR = bar +target: +endif + @echo one +', + '', "one\n"); + # This tells the test driver that the perl test script executed properly. 1; + +### Local Variables: +### eval: (setq whitespace-action (delq 'auto-cleanup whitespace-action)) +### End: |