mirror of git://git.musl-libc.org/musl
byte-based printf family: emit a nul byte for %lc with argument zero
this is contrary to the spec as written, which requires %lc to behave as if it were %ls on a 2-wchar_t buffer containing the argument and zero. however, apparently no other implementations conform to the spec as written, and in response to Austin Group issue #1647, WG14 chose to align with existing practice and have %lc produce output for this case.
This commit is contained in:
parent
8c086e7674
commit
7b6a6516e1
|
@ -588,6 +588,7 @@ static int printf_core(FILE *f, const char *fmt, va_list *ap, union arg *nl_arg,
|
|||
}
|
||||
p = MAX(p, z-a + !arg.i);
|
||||
break;
|
||||
narrow_c:
|
||||
case 'c':
|
||||
*(a=z-(p=1))=arg.i;
|
||||
fl &= ~ZERO_PAD;
|
||||
|
@ -602,6 +603,7 @@ static int printf_core(FILE *f, const char *fmt, va_list *ap, union arg *nl_arg,
|
|||
fl &= ~ZERO_PAD;
|
||||
break;
|
||||
case 'C':
|
||||
if (!arg.i) goto narrow_c;
|
||||
wc[0] = arg.i;
|
||||
wc[1] = 0;
|
||||
arg.p = wc;
|
||||
|
|
Loading…
Reference in New Issue