bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

fix of lib/vasnprintf.c


From: Bruno Haible
Subject: fix of lib/vasnprintf.c
Date: Wed, 6 Feb 2008 23:58:04 +0100
User-agent: KMail/1.5.4

Hi,

The padding code of lib/vasnprintf.c "forgets" to do zero-padding in the
Unicode-enabled *printf variants and on mingw. This fixes it.


2008-02-06  Bruno Haible  <address@hidden>

        Fix bug introduced on 2007-06-10.
        * lib/vasnprintf.c (VASNPRINTF): Perform zero-padding also if
        !NEED_PRINTF_FLAG_ZERO.

*** lib/vasnprintf.c.orig       2008-02-06 23:52:15.000000000 +0100
--- lib/vasnprintf.c    2008-02-06 23:52:03.000000000 +0100
***************
*** 4535,4549 ****
  # endif
                              DCHAR_T *p = rp + count;
                              DCHAR_T *end = p + pad;
- # if NEED_PRINTF_FLAG_ZERO
                              DCHAR_T *pad_ptr;
! #  if !DCHAR_IS_TCHAR
                              if (dp->conversion == 'c'
                                  || dp->conversion == 's')
                                /* No zero-padding for string directives.  */
                                pad_ptr = NULL;
                              else
! #  endif
                                {
                                  pad_ptr = (*rp == '-' ? rp + 1 : rp);
                                  /* No zero-padding of "inf" and "nan".  */
--- 4535,4548 ----
  # endif
                              DCHAR_T *p = rp + count;
                              DCHAR_T *end = p + pad;
                              DCHAR_T *pad_ptr;
! # if !DCHAR_IS_TCHAR
                              if (dp->conversion == 'c'
                                  || dp->conversion == 's')
                                /* No zero-padding for string directives.  */
                                pad_ptr = NULL;
                              else
! # endif
                                {
                                  pad_ptr = (*rp == '-' ? rp + 1 : rp);
                                  /* No zero-padding of "inf" and "nan".  */
***************
*** 4551,4557 ****
                                      || (*pad_ptr >= 'a' && *pad_ptr <= 'z'))
                                    pad_ptr = NULL;
                                }
- # endif
                              /* The generated string now extends from rp to p,
                                 with the zero padding insertion point being at
                                 pad_ptr.  */
--- 4550,4555 ----
***************
*** 4564,4570 ****
                                  for (; pad > 0; pad--)
                                    *p++ = ' ';
                                }
- # if NEED_PRINTF_FLAG_ZERO
                              else if ((flags & FLAG_ZERO) && pad_ptr != NULL)
                                {
                                  /* Pad with zeroes.  */
--- 4562,4567 ----
***************
*** 4575,4581 ****
                                  for (; pad > 0; pad--)
                                    *p++ = '0';
                                }
- # endif
                              else
                                {
                                  /* Pad with spaces on the left.  */
--- 4572,4577 ----





reply via email to

[Prev in Thread] Current Thread [Next in Thread]