mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-13 06:40:09 +00:00
Remove limitation on size of precision for integers.
This commit is contained in:
parent
fc9484ab19
commit
5d785ba068
@ -653,19 +653,15 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
|
||||
} \
|
||||
} \
|
||||
\
|
||||
prec -= workend - string; \
|
||||
\
|
||||
if (prec > 0) \
|
||||
/* Add zeros to the precision. */ \
|
||||
while (prec-- > 0) \
|
||||
*string-- = '0'; \
|
||||
else if (number.word != 0 && alt && base == 8) \
|
||||
if (prec <= workend - string && number.word != 0 && alt && base == 8) \
|
||||
/* Add octal marker. */ \
|
||||
*string-- = '0'; \
|
||||
\
|
||||
prec = MAX (0, prec - (workend - string)); \
|
||||
\
|
||||
if (!left) \
|
||||
{ \
|
||||
width -= workend - string; \
|
||||
width -= workend - string + prec; \
|
||||
\
|
||||
if (number.word != 0 && alt && base == 16) \
|
||||
/* Account for 0X hex marker. */ \
|
||||
@ -674,63 +670,67 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
|
||||
if (is_negative || showsign || space) \
|
||||
--width; \
|
||||
\
|
||||
if (pad == '0') \
|
||||
if (pad == ' ') \
|
||||
{ \
|
||||
while (width-- > 0) \
|
||||
*string-- = '0'; \
|
||||
\
|
||||
if (number.word != 0 && alt && base == 16) \
|
||||
{ \
|
||||
*string-- = spec; \
|
||||
*string-- = '0'; \
|
||||
} \
|
||||
\
|
||||
if (is_negative) \
|
||||
*string-- = '-'; \
|
||||
else if (showsign) \
|
||||
*string-- = '+'; \
|
||||
else if (space) \
|
||||
*string-- = ' '; \
|
||||
PAD (L_(' ')); \
|
||||
width = 0; \
|
||||
} \
|
||||
else \
|
||||
\
|
||||
if (is_negative) \
|
||||
PUTC (L_('-'), s); \
|
||||
else if (showsign) \
|
||||
PUTC (L_('+'), s); \
|
||||
else if (space) \
|
||||
PUTC (L_(' '), s); \
|
||||
\
|
||||
if (number.word != 0 && alt && base == 16) \
|
||||
{ \
|
||||
if (number.word != 0 && alt && base == 16) \
|
||||
{ \
|
||||
*string-- = spec; \
|
||||
*string-- = '0'; \
|
||||
} \
|
||||
\
|
||||
if (is_negative) \
|
||||
*string-- = '-'; \
|
||||
else if (showsign) \
|
||||
*string-- = '+'; \
|
||||
else if (space) \
|
||||
*string-- = ' '; \
|
||||
\
|
||||
while (width-- > 0) \
|
||||
*string-- = ' '; \
|
||||
PUTC (L_('0'), s); \
|
||||
PUTC (spec, s); \
|
||||
} \
|
||||
\
|
||||
width += prec; \
|
||||
PAD (L_('0')); \
|
||||
\
|
||||
outstring (string + 1, workend - string); \
|
||||
\
|
||||
break; \
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
if (number.word != 0 && alt && base == 16) \
|
||||
if (is_negative) \
|
||||
{ \
|
||||
*string-- = spec; \
|
||||
*string-- = '0'; \
|
||||
PUTC (L_('-'), s); \
|
||||
--width; \
|
||||
} \
|
||||
else if (showsign) \
|
||||
{ \
|
||||
PUTC (L_('+'), s); \
|
||||
--width; \
|
||||
} \
|
||||
else if (space) \
|
||||
{ \
|
||||
PUTC (L_(' '), s); \
|
||||
--width; \
|
||||
} \
|
||||
\
|
||||
if (is_negative) \
|
||||
*string-- = '-'; \
|
||||
else if (showsign) \
|
||||
*string-- = '+'; \
|
||||
else if (space) \
|
||||
*string-- = ' '; \
|
||||
if (number.word != 0 && alt && base == 16) \
|
||||
{ \
|
||||
PUTC (L_('0'), s); \
|
||||
PUTC (spec, s); \
|
||||
width -= 2; \
|
||||
} \
|
||||
\
|
||||
width -= workend - string + prec; \
|
||||
\
|
||||
if (prec > 0) \
|
||||
{ \
|
||||
int temp = width; \
|
||||
width = prec; \
|
||||
PAD (L_('0')); \
|
||||
width = temp; \
|
||||
} \
|
||||
\
|
||||
width -= workend - string; \
|
||||
outstring (string + 1, workend - string); \
|
||||
\
|
||||
PAD (' '); \
|
||||
|
Loading…
Reference in New Issue
Block a user