mirror of
https://github.com/mirror/make.git
synced 2025-02-05 09:10:12 +08:00
* main.c (die): Close output_context AND make_sync.
die() can be invoked inside a separate output_context, if the $(error ...) function is expanded as part of a recipe.
This commit is contained in:
parent
432cb6575d
commit
9c8b68a905
9
main.c
9
main.c
@ -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);
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user