summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--Src/builtin.c2
-rw-r--r--Test/B03print.ztst6
3 files changed, 13 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index a70ead69f..641992bd1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,9 @@
-2016-11-21 Oliver Kiddle <okiddle@yahoo.co.uk>
+2016-11-23 Oliver Kiddle <opk@zsh.org>
+
+ * unposted: Src/builtin.c, Test/B03print.ztst: fix printf -v
+ to an array without format string reuse
+
+2016-11-21 Oliver Kiddle <opk@zsh.org>
* 39993: Test/Y01completion.ztst: Tests for 39981.
diff --git a/Src/builtin.c b/Src/builtin.c
index d3c628592..ab159ad09 100644
--- a/Src/builtin.c
+++ b/Src/builtin.c
@@ -5034,7 +5034,7 @@ bin_print(char *name, char **args, Options ops, int func)
if (buf)
free(buf);
} else {
- if (visarr) {
+ if (visarr && splits) {
char **arrayval = zshcalloc((cursplit - splits + 2) * sizeof(char *));
for (;cursplit >= splits; cursplit--) {
int start = cursplit == splits ? 0 : cursplit[-1];
diff --git a/Test/B03print.ztst b/Test/B03print.ztst
index 6ee2a09c6..3f9a4046d 100644
--- a/Test/B03print.ztst
+++ b/Test/B03print.ztst
@@ -316,3 +316,9 @@
typeset -p foo
0:printf into an array variable
>typeset -a foo=( '1 one' '2 two' '3 three' )
+
+ typeset -a foo
+ print -f '%s' -v foo string
+ typeset -p foo
+0:printf to an array variable without format string reuse
+>typeset foo=string