Fix bug introduced on 2007-06-10.
authorBruno Haible <bruno@clisp.org>
Wed, 6 Feb 2008 22:58:36 +0000 (23:58 +0100)
committerBruno Haible <bruno@clisp.org>
Wed, 6 Feb 2008 22:58:36 +0000 (23:58 +0100)
ChangeLog
lib/vasnprintf.c

index 7d64aa0..5fbb494 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2008-02-06  Bruno Haible  <bruno@clisp.org>
+
+       Fix bug introduced on 2007-06-10.
+       * lib/vasnprintf.c (VASNPRINTF): Perform zero-padding also if
+       !NEED_PRINTF_FLAG_ZERO.
+
 2008-02-05  Peter O'Gorman <pogma@thewrittenword.com>
 
        getloadavg: use libperfstat on AIX5
index 19cc009..1a74a44 100644 (file)
@@ -4535,15 +4535,14 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
 # 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 !DCHAR_IS_TCHAR
                              if (dp->conversion == 'c'
                                  || dp->conversion == 's')
                                /* No zero-padding for string directives.  */
                                pad_ptr = NULL;
                              else
-#  endif
+# endif
                                {
                                  pad_ptr = (*rp == '-' ? rp + 1 : rp);
                                  /* No zero-padding of "inf" and "nan".  */
@@ -4551,7 +4550,6 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
                                      || (*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.  */
@@ -4564,7 +4562,6 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
                                  for (; pad > 0; pad--)
                                    *p++ = ' ';
                                }
-# if NEED_PRINTF_FLAG_ZERO
                              else if ((flags & FLAG_ZERO) && pad_ptr != NULL)
                                {
                                  /* Pad with zeroes.  */
@@ -4575,7 +4572,6 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
                                  for (; pad > 0; pad--)
                                    *p++ = '0';
                                }
-# endif
                              else
                                {
                                  /* Pad with spaces on the left.  */