summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Smith <psmith@gnu.org>2016-05-21 13:08:34 -0400
committerPaul Smith <psmith@gnu.org>2016-05-21 16:22:32 -0400
commite2ebea35f11059e888b2fe2bfc8b24fda48c1f88 (patch)
treee79a36cc4c885fcad80b240edd878604648bdd2e
parentc73ed7dd1cda65463e9ed8b99bcd4a7d9195d7fa (diff)
* read.c (eval): [SV 47960] Skip record waiting files when ignoring.
* tests/scripts/features/conditionals: Test this scenario.
-rw-r--r--read.c6
-rw-r--r--tests/scripts/features/conditionals16
2 files changed, 19 insertions, 3 deletions
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: