about summary refs log tree commit diff
diff options
context:
space:
mode:
authorPeter Stephenson <pws@zsh.org>2015-09-02 14:20:44 +0100
committerPeter Stephenson <pws@zsh.org>2015-09-02 14:20:44 +0100
commit0e63286bd47bab051d49597d3df160b1e9dbb6a3 (patch)
tree64e3ef590205fce45a6065df33b4cf1f4a57055e
parent8e3ca08f13f198caa7cd7dc2bb37863238bea4f2 (diff)
downloadzsh-0e63286bd47bab051d49597d3df160b1e9dbb6a3.tar.gz
zsh-0e63286bd47bab051d49597d3df160b1e9dbb6a3.tar.xz
zsh-0e63286bd47bab051d49597d3df160b1e9dbb6a3.zip
36399: Shell code text with multiple here documents wasn't shown properly.
-rw-r--r--ChangeLog5
-rw-r--r--Src/text.c4
-rw-r--r--Test/A04redirect.ztst31
3 files changed, 38 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 167d2f408..805d3eade 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2015-09-02  Peter Stephenson  <p.stephenson@samsung.com>
+
+	* 36399: Src/text.c, Test/A04redirect.ztst: shell code with
+	multiple here documents wasn't shown properly.
+
 2015-09-01  Mikael Magnusson  <mikachu@gmail.com>
 
 	* 36380: Src/utils.c: Avoid gcc case syntax
diff --git a/Src/text.c b/Src/text.c
index 3978a26a9..7e65f43a4 100644
--- a/Src/text.c
+++ b/Src/text.c
@@ -77,8 +77,8 @@ taddpending(char *str1, char *str2)
      */
     if (tpending) {
 	int oldlen = strlen(tpending);
-	tpending = zrealloc(tpending, len + oldlen);
-	sprintf(tpending + oldlen, "%s%s", str1, str2);
+	tpending = zrealloc(tpending, len + oldlen + 1);
+	sprintf(tpending + oldlen, "\n%s%s", str1, str2);
     } else {
 	tpending = (char *)zalloc(len);
 	sprintf(tpending, "%s%s", str1, str2);
diff --git a/Test/A04redirect.ztst b/Test/A04redirect.ztst
index 602341d05..d7fe22fb0 100644
--- a/Test/A04redirect.ztst
+++ b/Test/A04redirect.ztst
@@ -555,3 +555,34 @@
 0:Assignment with exec used for redirection: POSIX_BUILTINS
 >x=And this
 ?This should appear, too
+
+  fn-two-heres() {
+# tabs below
+    cat <<-x <<-y
+	foo
+	x
+	bar
+	y
+  }
+  which -x2 fn-two-heres
+  fn-two-heres
+  eval "$(which -x2 fn-two-heres)"
+  fn-two-heres
+  print $functions[fn-two-heres]
+0:Two here-documents in a line are shown correctly.
+>fn-two-heres () {
+>  cat <<x <<y
+>foo
+>x
+>bar
+>y
+>}
+>foo
+>bar
+>foo
+>bar
+>	cat <<x <<y
+>foo
+>x
+>bar
+>y