aboutsummaryrefslogtreecommitdiffstats
path: root/main/busybox/0001-ash-regressions-in-process-substitution.patch
diff options
context:
space:
mode:
Diffstat (limited to 'main/busybox/0001-ash-regressions-in-process-substitution.patch')
-rw-r--r--main/busybox/0001-ash-regressions-in-process-substitution.patch80
1 files changed, 0 insertions, 80 deletions
diff --git a/main/busybox/0001-ash-regressions-in-process-substitution.patch b/main/busybox/0001-ash-regressions-in-process-substitution.patch
deleted file mode 100644
index 98fdba7917d..00000000000
--- a/main/busybox/0001-ash-regressions-in-process-substitution.patch
+++ /dev/null
@@ -1,80 +0,0 @@
-From dab3c63da581f0d3d58e3ea1a620474eb5dad0ee Mon Sep 17 00:00:00 2001
-From: Ron Yorston <rmy@pobox.com>
-Date: Mon, 30 Aug 2021 20:31:42 +0100
-Subject: [PATCH] ash: regressions in process substitution
-
-Stacy Harper reports that this script:
-
- test() { . /tmp/bb_test; }
- echo "export TEST=foo" >/tmp/bb_test
- test 2>/dev/null
- echo "$TEST"
-
-correctly prints 'foo' in BusyBox 1.33 but hangs in 1.34.
-
-Bisection suggested the problem was caused by commit a1b0d3856 (ash: add
-process substitution in bash-compatibility mode). Removing the call to
-unwindredir() in cmdloop() introduced in that commit makes the script
-work again.
-
-Additionally, these examples of process substitution:
-
- while true; do cat <(echo hi); done
- f() { while true; do cat <(echo hi); done }
- f
-
-result in running out of file descriptors. This is a regression from
-v5 of the process substitution patch caused by changes to evalcommand()
-not being transferred to v6.
-
-function old new delta
-static.pushredir - 99 +99
-evalcommand 1729 1750 +21
-exitreset 69 86 +17
-cmdloop 372 365 -7
-unwindredir 28 - -28
-pushredir 112 - -112
-------------------------------------------------------------------------------
-(add/remove: 1/2 grow/shrink: 2/1 up/down: 137/-147) Total: -10 bytes
-
-Signed-off-by: Ron Yorston <rmy@pobox.com>
----
- shell/ash.c | 10 +++++++---
- 1 file changed, 7 insertions(+), 3 deletions(-)
-
-diff --git a/shell/ash.c b/shell/ash.c
-index b5947147a..53c140930 100644
---- a/shell/ash.c
-+++ b/shell/ash.c
-@@ -10278,6 +10278,9 @@ evalcommand(union node *cmd, int flags)
-
- /* First expand the arguments. */
- TRACE(("evalcommand(0x%lx, %d) called\n", (long)cmd, flags));
-+#if BASH_PROCESS_SUBST
-+ redir_stop = redirlist;
-+#endif
- file_stop = g_parsefile;
- back_exitstatus = 0;
-
-@@ -10356,7 +10359,11 @@ evalcommand(union node *cmd, int flags)
- lastarg = nargv[-1];
-
- expredir(cmd->ncmd.redirect);
-+#if !BASH_PROCESS_SUBST
- redir_stop = pushredir(cmd->ncmd.redirect);
-+#else
-+ pushredir(cmd->ncmd.redirect);
-+#endif
- preverrout_fd = 2;
- if (BASH_XTRACEFD && xflag) {
- /* NB: bash closes fd == $BASH_XTRACEFD when it is changed.
-@@ -13476,9 +13483,6 @@ cmdloop(int top)
- #if JOBS
- if (doing_jobctl)
- showjobs(SHOW_CHANGED|SHOW_STDERR);
--#endif
--#if BASH_PROCESS_SUBST
-- unwindredir(NULL);
- #endif
- inter = 0;
- if (iflag && top) {