You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@apr.apache.org by jo...@apache.org on 2007/04/26 15:16:23 UTC

svn commit: r532735 - in /apr/apr/branches/1.2.x: CHANGES strings/apr_snprintf.c test/testfmt.c

Author: jorton
Date: Thu Apr 26 06:16:22 2007
New Revision: 532735

URL: http://svn.apache.org/viewvc?view=rev&rev=532735
Log:
Merge r532733 from trunk:

* strings/apr_snprintf.c (conv_10_quad): Fix formatting of unsigned
integers between 2^63 and 2^64 on 32-bit platforms.

* test/testfmt.c (more_int64_fmts): Test an even bigger unsigned
int64.

Submitted by: Wynn Wilkes <wynn bungeelabs.com>
PR: 42250

Modified:
    apr/apr/branches/1.2.x/CHANGES
    apr/apr/branches/1.2.x/strings/apr_snprintf.c
    apr/apr/branches/1.2.x/test/testfmt.c

Modified: apr/apr/branches/1.2.x/CHANGES
URL: http://svn.apache.org/viewvc/apr/apr/branches/1.2.x/CHANGES?view=diff&rev=532735&r1=532734&r2=532735
==============================================================================
--- apr/apr/branches/1.2.x/CHANGES (original)
+++ apr/apr/branches/1.2.x/CHANGES Thu Apr 26 06:16:22 2007
@@ -1,5 +1,9 @@
 Changes for APR 1.2.9
 
+  *) Fix formatting of unsigned integers larger than 2^63 in the
+     vformatter/apr_*printf.  PR 42250.  
+     [Wynn Wilkes <wynn bungeelabs.com>]
+
   *) Fix possible EFAULT failures in apr_socket_sendfile() on 32-bit
      Solaris with LFS enabled.  PR 39463.  [Joe Orton, Joseph Tam
      <tam math.ubc.ca>]

Modified: apr/apr/branches/1.2.x/strings/apr_snprintf.c
URL: http://svn.apache.org/viewvc/apr/apr/branches/1.2.x/strings/apr_snprintf.c?view=diff&rev=532735&r1=532734&r2=532735
==============================================================================
--- apr/apr/branches/1.2.x/strings/apr_snprintf.c (original)
+++ apr/apr/branches/1.2.x/strings/apr_snprintf.c Thu Apr 26 06:16:22 2007
@@ -396,7 +396,7 @@
      * number against the largest long value it can be. If <=, we
      * punt to the quicker version.
      */
-    if ((num <= ULONG_MAX && is_unsigned) 
+    if (((u_widest_int)num <= (u_widest_int)ULONG_MAX && is_unsigned) 
         || (num <= LONG_MAX && num >= LONG_MIN && !is_unsigned))
             return(conv_10( (wide_int)num, is_unsigned, is_negative,
                buf_end, len));

Modified: apr/apr/branches/1.2.x/test/testfmt.c
URL: http://svn.apache.org/viewvc/apr/apr/branches/1.2.x/test/testfmt.c?view=diff&rev=532735&r1=532734&r2=532735
==============================================================================
--- apr/apr/branches/1.2.x/test/testfmt.c (original)
+++ apr/apr/branches/1.2.x/test/testfmt.c Thu Apr 26 06:16:22 2007
@@ -102,7 +102,7 @@
     apr_int64_t i = APR_INT64_C(-42);
     apr_int64_t ibig = APR_INT64_C(-314159265358979323);
     apr_uint64_t ui = APR_UINT64_C(42);
-    apr_uint64_t big = APR_UINT64_C(3141592653589793238);
+    apr_uint64_t big = APR_UINT64_C(10267677267010969076);
 
     apr_snprintf(buf, sizeof buf, "%" APR_INT64_T_FMT, i);
     ABTS_STR_EQUAL(tc, buf, "-42");
@@ -111,7 +111,7 @@
     ABTS_STR_EQUAL(tc, buf, "42");
 
     apr_snprintf(buf, sizeof buf, "%" APR_UINT64_T_FMT, big);
-    ABTS_STR_EQUAL(tc, buf, "3141592653589793238");
+    ABTS_STR_EQUAL(tc, "10267677267010969076", buf);
 
     apr_snprintf(buf, sizeof buf, "%" APR_INT64_T_FMT, ibig);
     ABTS_STR_EQUAL(tc, buf, "-314159265358979323");