aa0c2cfdd67a58ce86acb8fb1f11a7ccd89d294c
[librecmc/librecmc.git] /
1 From 78897b0dc00b7cd5c29af5e0b7eebf2396d8dce0 Mon Sep 17 00:00:00 2001
2 From: Rich Felker <dalias@aerifal.cx>
3 Date: Fri, 16 Sep 2016 17:40:08 -0400
4 Subject: fix printf regression with alt-form octal, zero flag, and field width
5
6 commit b91cdbe2bc8b626aa04dc6e3e84345accf34e4b1, in fixing another
7 issue, changed the logic for how alt-form octal adds the leading zero
8 to adjust the precision rather than using a prefix character. this
9 wrongly suppressed the zero flag by mimicing an explicit precision
10 given by the format string. switch back to using a prefix character.
11
12 based on bug report and patch by Dmitry V. Levin, but simplified.
13 ---
14  src/stdio/vfprintf.c | 2 +-
15  1 file changed, 1 insertion(+), 1 deletion(-)
16
17 diff --git a/src/stdio/vfprintf.c b/src/stdio/vfprintf.c
18 index 2ecf769..e439a07 100644
19 --- a/src/stdio/vfprintf.c
20 +++ b/src/stdio/vfprintf.c
21 @@ -570,7 +570,7 @@ static int printf_core(FILE *f, const char *fmt, va_list *ap, union arg *nl_arg,
22                         if (0) {
23                 case 'o':
24                         a = fmt_o(arg.i, z);
25 -                       if ((fl&ALT_FORM) && p<z-a+1) p=z-a+1;
26 +                       if ((fl&ALT_FORM) && p<z-a+1) prefix+=5, pl=1;
27                         } if (0) {
28                 case 'd': case 'i':
29                         pl=1;
30 -- 
31 cgit v0.11.2