diff options
-rw-r--r-- | main.c | 9 | ||||
-rw-r--r-- | tests/scripts/features/output-sync | 7 |
2 files changed, 14 insertions, 2 deletions
@@ -3406,9 +3406,14 @@ die (int status) if (output_context) { - assert (output_context == &make_sync); + /* die() might be called in a recipe output context due to an + $(error ...) function. */ + output_close (output_context); + + if (output_context != &make_sync) + output_close (&make_sync); + OUTPUT_UNSET (); - output_close (&make_sync); } output_close (NULL); diff --git a/tests/scripts/features/output-sync b/tests/scripts/features/output-sync index 75d7e81..a7534cb 100644 --- a/tests/scripts/features/output-sync +++ b/tests/scripts/features/output-sync @@ -330,5 +330,12 @@ t1: ; -\@\$(MAKE) -f $m1 rmfiles($m1); +# Test $(error ...) functions in recipes + +run_make_test(q! +foo: $(OBJS) ; echo $(or $(filter %.o,$^),$(error fail)) +!, + '-O', "#MAKEFILE#:2: *** fail. Stop.\n", 512); + # This tells the test driver that the perl test script executed properly. 1; |