diff --git a/read.c b/read.c index 5de5a483..b870aa85 100644 --- a/read.c +++ b/read.c @@ -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: