ash: Expand here-documents in the current shell environment
authorDenys Vlasenko <vda.linux@googlemail.com>
Sat, 22 Feb 2020 19:25:03 +0000 (20:25 +0100)
committerDenys Vlasenko <vda.linux@googlemail.com>
Sat, 22 Feb 2020 19:29:36 +0000 (20:29 +0100)
commitc2058ec98cf3f6722be4436cae07a386e3c7b48d
tree16d21416ad7716949955b73481c8224f701eb705
parentc08993f40c0c6c7bdf453e77c3aa9dae8ec0dad9
ash: Expand here-documents in the current shell environment

Upstream commit:

    Date: Sun, 11 Nov 2007 15:27:00 +0800
    Expand here-documents in the current shell environment

    Previously we always expanded here-documents in a subshell.  This is
    contrary to the POSIX specification and how other shells behave.  What's
    more this slows down many expansions due to the extra fork (however, it
    must be said that it is possible for it speed up certain expansions by
    running it simultaneously with the command on two CPUs).

    This patch move the expansion into the current shell environment.

    Test case:

            unset a
            cat <<- EOF > /dev/null
                    ${a=NOT}
            EOF
            echo ${a}BAD

    Old result:

            BAD

    New result:

            NOTBAD

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
shell/ash.c
shell/ash_test/ash-heredoc/heredoc_side_effects.right [new file with mode: 0644]
shell/ash_test/ash-heredoc/heredoc_side_effects.tests [new file with mode: 0755]