summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog3
-rw-r--r--Doc/Zsh/redirect.yo3
-rw-r--r--Src/exec.c4
3 files changed, 8 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 3b7cc4921..a525d2093 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -15,6 +15,9 @@
* 49870: Src/glob.c: Fix NULL reference in match code more
+ * 49813: Doc/Zsh/redirect.yo, Src/exec.c: <<<: Document newline
+ behavior and fix optimization
+
2022-03-29 Bart Schaefer <schaefer@zsh.org>
* 49918: NEWS, README: Update for 49917 and 49911.
diff --git a/Doc/Zsh/redirect.yo b/Doc/Zsh/redirect.yo
index 2b48974b4..fd40ab5a4 100644
--- a/Doc/Zsh/redirect.yo
+++ b/Doc/Zsh/redirect.yo
@@ -86,7 +86,8 @@ item(tt(<<<) var(word))(
Perform shell expansion on var(word) and pass the result
to standard input. This is known as a em(here-string).
Compare the use of var(word) in here-documents above, where var(word)
-does not undergo shell expansion.
+does not undergo shell expansion. The result will have a trailing newline
+after it.
)
xitem(tt(<&) var(number))
item(tt(>&) var(number))(
diff --git a/Src/exec.c b/Src/exec.c
index f67074846..70cbfc97f 100644
--- a/Src/exec.c
+++ b/Src/exec.c
@@ -4836,8 +4836,10 @@ getoutputfile(char *cmd, char **eptr)
singsub(&s);
if (errflag)
s = NULL;
- else
+ else {
untokenize(s);
+ s = dyncat(s, "\n");
+ }
}
if (!s) /* Unclear why we need to do this before open() */