Save the value of the checkkwd flag to prevent it being clobbered
during recursion.

Based on commit ec2c84d from git://git.kernel.org/pub/scm/utils/dash/dash.git
by Herbert Xu.

Signed-off-by: Ron Yorston <r...@pobox.com>
---
 shell/ash.c                               | 5 +++--
 shell/ash_test/ash-heredoc/heredoc3.right | 1 +
 shell/ash_test/ash-heredoc/heredoc3.tests | 9 +++++++++
 3 files changed, 13 insertions(+), 2 deletions(-)
 create mode 100644 shell/ash_test/ash-heredoc/heredoc3.right
 create mode 100755 shell/ash_test/ash-heredoc/heredoc3.tests

diff --git a/shell/ash.c b/shell/ash.c
index 8a1628e..256e933 100644
--- a/shell/ash.c
+++ b/shell/ash.c
@@ -11893,6 +11893,7 @@ static int
 readtoken(void)
 {
        int t;
+       int kwd = checkkwd;
 #if DEBUG
        smallint alreadyseen = tokpushback;
 #endif
@@ -11906,7 +11907,7 @@ readtoken(void)
        /*
         * eat newlines
         */
-       if (checkkwd & CHKNL) {
+       if (kwd & CHKNL) {
                while (t == TNL) {
                        parseheredoc();
                        t = xxreadtoken();
@@ -11920,7 +11921,7 @@ readtoken(void)
        /*
         * check for keywords
         */
-       if (checkkwd & CHKKWD) {
+       if (kwd & CHKKWD) {
                const char *const *pp;
 
                pp = findkwd(wordtext);
diff --git a/shell/ash_test/ash-heredoc/heredoc3.right 
b/shell/ash_test/ash-heredoc/heredoc3.right
new file mode 100644
index 0000000..ce01362
--- /dev/null
+++ b/shell/ash_test/ash-heredoc/heredoc3.right
@@ -0,0 +1 @@
+hello
diff --git a/shell/ash_test/ash-heredoc/heredoc3.tests 
b/shell/ash_test/ash-heredoc/heredoc3.tests
new file mode 100755
index 0000000..96c227c
--- /dev/null
+++ b/shell/ash_test/ash-heredoc/heredoc3.tests
@@ -0,0 +1,9 @@
+echo hello >greeting
+cat <<EOF &&
+$(cat greeting)
+EOF
+{
+       echo $?
+       cat greeting
+} >/dev/null
+rm greeting
-- 
2.5.0

_______________________________________________
busybox mailing list
busybox@busybox.net
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to