summaryrefslogtreecommitdiffstats
path: root/source/a/bash/bash-4.4-patches/bash44-016
diff options
context:
space:
mode:
Diffstat (limited to 'source/a/bash/bash-4.4-patches/bash44-016')
-rw-r--r--source/a/bash/bash-4.4-patches/bash44-01678
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 000000000..94ae90baa
--- /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_ */