mirror of
https://sourceware.org/git/glibc.git
synced 2025-08-08 17:42:12 +03:00
Correctly handle %p in wprintf (BZ #16890)
This commit is contained in:
@@ -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>
|
2014-05-01 Steve Ellcey <sellcey@mips.com>
|
||||||
|
|
||||||
* intl/iconv/skeleton.c (ONE_DIRECTION): Remove define.
|
* 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,
|
16677, 16680, 16683, 16689, 16695, 16701, 16706, 16707, 16712, 16713,
|
||||||
16714, 16731, 16739, 16740, 16743, 16754, 16758, 16759, 16760, 16770,
|
16714, 16731, 16739, 16740, 16743, 16754, 16758, 16759, 16760, 16770,
|
||||||
16786, 16789, 16791, 16799, 16800, 16815, 16823, 16824, 16831, 16838,
|
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
|
* The minimum Linux kernel version that this version of the GNU C Library
|
||||||
can be used with is 2.6.32.
|
can be used with is 2.6.32.
|
||||||
|
@@ -46,6 +46,24 @@ t2 (void)
|
|||||||
return result;
|
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 double qnanval;
|
||||||
volatile long double lqnanval;
|
volatile long double lqnanval;
|
||||||
/* A sNaN is only guaranteed to be representable in variables with static (or
|
/* 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 |= t1 ();
|
||||||
result |= t2 ();
|
result |= t2 ();
|
||||||
|
result |= t3 ();
|
||||||
result |= F ();
|
result |= F ();
|
||||||
|
|
||||||
result |= fflush (stdout) == EOF;
|
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. */ \
|
/* Make sure the full string "(nil)" is printed. */ \
|
||||||
if (prec < 5) \
|
if (prec < 5) \
|
||||||
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); \
|
goto LABEL (print_string); \
|
||||||
} \
|
} \
|
||||||
} \
|
} \
|
||||||
|
Reference in New Issue
Block a user