From: Chet Ramey Date: Mon, 14 Nov 2016 19:27:35 +0000 (-0500) Subject: Bash-4.4 patch 4 X-Git-Tag: bash-5.0-alpha~17 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=2965eca924466a48c5597ac5c6c86d470e718908;p=thirdparty%2Fbash.git Bash-4.4 patch 4 --- diff --git a/jobs.c b/jobs.c index cef3c79aa..fc9660366 100644 --- a/jobs.c +++ b/jobs.c @@ -453,6 +453,21 @@ cleanup_the_pipeline () discard_pipeline (disposer); } +void +discard_last_procsub_child () +{ + PROCESS *disposer; + sigset_t set, oset; + + BLOCK_CHILD (set, oset); + disposer = last_procsub_child; + last_procsub_child = (PROCESS *)NULL; + UNBLOCK_CHILD (oset); + + if (disposer) + discard_pipeline (disposer); +} + struct pipeline_saver * alloc_pipeline_saver () { diff --git a/jobs.h b/jobs.h index 4ba3513c4..6df0607ed 100644 --- a/jobs.h +++ b/jobs.h @@ -190,6 +190,7 @@ extern JOB **jobs; extern void making_children __P((void)); extern void stop_making_children __P((void)); extern void cleanup_the_pipeline __P((void)); +extern void discard_last_procsub_child __P((void)); extern void save_pipeline __P((int)); extern PROCESS *restore_pipeline __P((int)); extern void start_pipeline __P((void)); diff --git a/patchlevel.h b/patchlevel.h index e7e960c1a..c059f0bd7 100644 --- a/patchlevel.h +++ b/patchlevel.h @@ -25,6 +25,6 @@ regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh looks for to find the patch level (for the sccs version string). */ -#define PATCHLEVEL 3 +#define PATCHLEVEL 4 #endif /* _PATCHLEVEL_H_ */ diff --git a/subst.c b/subst.c index 4d498ef36..298187d2f 100644 --- a/subst.c +++ b/subst.c @@ -5808,10 +5808,7 @@ process_substitute (string, open_for_read_in_child) { #if defined (JOB_CONTROL) if (last_procsub_child) - { - discard_pipeline (last_procsub_child); - last_procsub_child = (PROCESS *)NULL; - } + discard_last_procsub_child (); last_procsub_child = restore_pipeline (0); #endif