From c1441714b523d9a390165846632dc18ea10ba91b Mon Sep 17 00:00:00 2001 From: Oliver Kiddle Date: Tue, 23 Oct 2001 11:22:33 +0000 Subject: zero %n value when reusing printf format (16122) --- ChangeLog | 5 +++++ Src/builtin.c | 3 ++- Test/B03print.ztst | 5 +++++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 4ecd18b12..afcd12e38 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2001-10-23 Oliver Kiddle + + * 16122: Src/builtin.c, Test/B03print.ztst: only count value + returned by %n in printf since last format reuse + 2001-10-22 Peter Stephenson * 16033: Pavel Roskin : diff --git a/Src/builtin.c b/Src/builtin.c index 038e1a199..1d8195835 100644 --- a/Src/builtin.c +++ b/Src/builtin.c @@ -2897,7 +2897,7 @@ bin_print(char *name, char **args, char *ops, int func) int flags[5], *len; char *start, *endptr, *c, *d, *flag, spec[11], *fmt = NULL; char **first, *curarg, *flagch = "0+- #", save, nullstr = '\0'; - zlong count = 0; + zlong count; FILE *fout = stdout; mnumber mnumval; @@ -3096,6 +3096,7 @@ bin_print(char *name, char **args, char *ops, int func) /* printf style output */ *spec='%'; do { + count = 0; if (maxarg) { first += maxarg; argc -= maxarg; diff --git a/Test/B03print.ztst b/Test/B03print.ztst index 3968faec3..1aa6d2051 100644 --- a/Test/B03print.ztst +++ b/Test/B03print.ztst @@ -144,6 +144,11 @@ >two b:0x2% >three c:0x3% + printf '%d%n' 123 val val val > /dev/null + printf '%d\n' val +0:%n count zeroed on format reuse +>1 + # this should fill spec string with '%0+- #*.*d\0' - 11 characters printf '%1$0+- #-08.5dx\n' 123 0:maximal length format specification -- cgit 1.4.1