1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-08-07 06:43:00 +03:00

printf should return negative value on error

[BZ #11741]
Fixed bug where printf and family may return a spurious success when
printing padded formats.
This commit is contained in:
Siddhesh Poyarekar
2012-11-16 19:13:11 +05:30
parent b1848fdeec
commit 2b766585f9
8 changed files with 92 additions and 29 deletions

View File

@@ -87,8 +87,18 @@
# define PUT(F, S, N) _IO_sputn ((F), (S), (N))
# define PAD(Padchar) \
if (width > 0) \
done_add (_IO_padn (s, (Padchar), width))
do { \
if (width > 0) \
{ \
unsigned int d = _IO_padn (s, (Padchar), width); \
if (__builtin_expect (d == EOF, 0)) \
{ \
done = -1; \
goto all_done; \
} \
done_add (d); \
} \
} while (0)
# define PUTC(C, F) _IO_putc_unlocked (C, F)
# define ORIENT if (_IO_vtable_offset (s) == 0 && _IO_fwide (s, -1) != -1)\
return -1
@@ -106,8 +116,18 @@
# define PUT(F, S, N) _IO_sputn ((F), (S), (N))
# define PAD(Padchar) \
if (width > 0) \
done_add (_IO_wpadn (s, (Padchar), width))
do { \
if (width > 0) \
{ \
unsigned int d = _IO_wpadn (s, (Padchar), width); \
if (__builtin_expect (d == EOF, 0)) \
{ \
done = -1; \
goto all_done; \
} \
done_add (d); \
} \
} while (0)
# define PUTC(C, F) _IO_putwc_unlocked (C, F)
# define ORIENT if (_IO_fwide (s, 1) != 1) return -1