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 2004/04/04 13:50:18 UTC

cvs commit: apr/strings apr_snprintf.c

jorton      2004/04/04 04:50:18

  Modified:    test     testfmt.c
               strings  apr_snprintf.c
  Log:
  * string/apr_snprintf.c (conv_10_quad): Fix formatting of integers
  smaller than LONG_MIN.
  
  * test/testfmt.c (more_int64_fmts): Add regression test.
  
  Revision  Changes    Path
  1.14      +4 -0      apr/test/testfmt.c
  
  Index: testfmt.c
  ===================================================================
  RCS file: /home/cvs/apr/test/testfmt.c,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -w -d -u -r1.13 -r1.14
  --- testfmt.c	13 Feb 2004 09:38:34 -0000	1.13
  +++ testfmt.c	4 Apr 2004 11:50:17 -0000	1.14
  @@ -99,6 +99,7 @@
   {
       char buf[100];
       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);
   
  @@ -110,6 +111,9 @@
   
       apr_snprintf(buf, sizeof buf, "%" APR_UINT64_T_FMT, big);
       CuAssertStrEquals(tc, buf, "3141592653589793238");
  +
  +    apr_snprintf(buf, sizeof buf, "%" APR_INT64_T_FMT, ibig);
  +    CuAssertStrEquals(tc, buf, "-314159265358979323");
   }
   
   CuSuite *testfmt(void)
  
  
  
  1.38      +2 -1      apr/strings/apr_snprintf.c
  
  Index: apr_snprintf.c
  ===================================================================
  RCS file: /home/cvs/apr/strings/apr_snprintf.c,v
  retrieving revision 1.37
  retrieving revision 1.38
  diff -w -d -u -r1.37 -r1.38
  --- apr_snprintf.c	13 Feb 2004 09:38:34 -0000	1.37
  +++ apr_snprintf.c	4 Apr 2004 11:50:17 -0000	1.38
  @@ -393,7 +393,8 @@
        * number against the largest long value it can be. If <=, we
        * punt to the quicker version.
        */
  -    if ((num <= ULONG_MAX && is_unsigned) || (num <= LONG_MAX && !is_unsigned))
  +    if ((num <= 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));