mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-22 19:00:07 +00:00
Correctly handle %p in wprintf (BZ #16890)
This commit is contained in:
parent
0cdddc25a4
commit
4fdfe821e2
@ -1,3 +1,11 @@
|
||||
2014-05-01 Andreas Schwab <schwab@linux-m68k.org>
|
||||
|
||||
[BZ #16890]
|
||||
* stdio-common/vfprintf.c (process_arg) [%p]: Mark string as wide
|
||||
when compiling wprintf.
|
||||
* stdio-common/tstdiomisc.c (t3): New function.
|
||||
(main): Call it.
|
||||
|
||||
2014-05-01 Steve Ellcey <sellcey@mips.com>
|
||||
|
||||
* intl/iconv/skeleton.c (ONE_DIRECTION): Remove define.
|
||||
|
2
NEWS
2
NEWS
@ -16,7 +16,7 @@ Version 2.20
|
||||
16677, 16680, 16683, 16689, 16695, 16701, 16706, 16707, 16712, 16713,
|
||||
16714, 16731, 16739, 16740, 16743, 16754, 16758, 16759, 16760, 16770,
|
||||
16786, 16789, 16791, 16799, 16800, 16815, 16823, 16824, 16831, 16838,
|
||||
16854, 16888.
|
||||
16854, 16888, 16890.
|
||||
|
||||
* The minimum Linux kernel version that this version of the GNU C Library
|
||||
can be used with is 2.6.32.
|
||||
|
@ -46,6 +46,24 @@ t2 (void)
|
||||
return result;
|
||||
}
|
||||
|
||||
static int
|
||||
t3 (void)
|
||||
{
|
||||
char buf[80];
|
||||
wchar_t wbuf[80];
|
||||
int result = 0;
|
||||
int retval;
|
||||
|
||||
retval = sprintf (buf, "%p", (char *) NULL);
|
||||
result |= retval != 5 || strcmp (buf, "(nil)") != 0;
|
||||
|
||||
retval = swprintf (wbuf, sizeof (wbuf) / sizeof (wbuf[0]),
|
||||
L"%p", (char *) NULL);
|
||||
result |= retval != 5 || wcscmp (wbuf, L"(nil)") != 0;
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
volatile double qnanval;
|
||||
volatile long double lqnanval;
|
||||
/* A sNaN is only guaranteed to be representable in variables with static (or
|
||||
@ -243,6 +261,7 @@ main (int argc, char *argv[])
|
||||
|
||||
result |= t1 ();
|
||||
result |= t2 ();
|
||||
result |= t3 ();
|
||||
result |= F ();
|
||||
|
||||
result |= fflush (stdout) == EOF;
|
||||
|
@ -936,7 +936,8 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
|
||||
/* Make sure the full string "(nil)" is printed. */ \
|
||||
if (prec < 5) \
|
||||
prec = 5; \
|
||||
is_long = 0; /* This is no wide-char string. */ \
|
||||
/* This is a wide string iff compiling wprintf. */ \
|
||||
is_long = sizeof (CHAR_T) > 1; \
|
||||
goto LABEL (print_string); \
|
||||
} \
|
||||
} \
|
||||
|
Loading…
Reference in New Issue
Block a user