diff options
Diffstat (limited to 'source/a/bash/bash-4.4-patches/bash44-016')
-rw-r--r-- | source/a/bash/bash-4.4-patches/bash44-016 | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/source/a/bash/bash-4.4-patches/bash44-016 b/source/a/bash/bash-4.4-patches/bash44-016 new file mode 100644 index 00000000..94ae90ba --- /dev/null +++ b/source/a/bash/bash-4.4-patches/bash44-016 @@ -0,0 +1,78 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.4 +Patch-ID: bash44-016 + +Bug-Reported-by: Luiz Angelo Daros de Luca <luizluca@gmail.com> +Bug-Reference-ID: <CAJq09z7G1-QnLyiUQA0DS=V3da_rtHF8VdYbbdzPe_W3kydpRg@mail.gmail.com> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2016-09/msg00092.html + +Bug-Description: + +Bash can perform trap processing while reading command substitution output +instead of waiting until the command completes. + +Patch (apply with `patch -p0'): + +*** ../bash-4.4/lib/sh/zread.c 2014-12-22 10:48:04.000000000 -0500 +--- lib/sh/zread.c 2016-09-29 15:21:36.000000000 -0400 +*************** +*** 38,42 **** +--- 38,45 ---- + #endif + ++ extern int executing_builtin; ++ + extern void check_signals_and_traps (void); ++ extern void check_signals (void); + extern int signal_is_trapped (int); + +*************** +*** 51,69 **** + ssize_t r; + +- #if 0 +- #if defined (HAVE_SIGINTERRUPT) +- if (signal_is_trapped (SIGCHLD)) +- siginterrupt (SIGCHLD, 1); +- #endif +- #endif +- + while ((r = read (fd, buf, len)) < 0 && errno == EINTR) +! check_signals_and_traps (); /* XXX - should it be check_signals()? */ +! +! #if 0 +! #if defined (HAVE_SIGINTERRUPT) +! siginterrupt (SIGCHLD, 0); +! #endif +! #endif + + return r; +--- 54,64 ---- + ssize_t r; + + while ((r = read (fd, buf, len)) < 0 && errno == EINTR) +! /* XXX - bash-5.0 */ +! /* We check executing_builtin and run traps here for backwards compatibility */ +! if (executing_builtin) +! check_signals_and_traps (); /* XXX - should it be check_signals()? */ +! else +! check_signals (); + + return r; +*** ../bash-4.4/patchlevel.h 2016-06-22 14:51:03.000000000 -0400 +--- patchlevel.h 2016-10-01 11:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 15 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 16 + + #endif /* _PATCHLEVEL_H_ */ |