* read.c (eval): [SV 47960] Skip record waiting files when ignoring.

* tests/scripts/features/conditionals: Test this scenario.
This commit is contained in:
Paul Smith 2016-05-21 13:08:34 -04:00
parent c73ed7dd1c
commit e2ebea35f1
2 changed files with 19 additions and 3 deletions

6
read.c
View file

@ -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);

View file

@ -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: