You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@apr.apache.org by Davi Arnaut <da...@haxent.com.br> on 2007/04/27 16:29:20 UTC

[patch 2/9] simpler integer to string conversion

Simpler and somewhat faster integer to string conversion. Emphasis on
the "simpler". Passes testfmt.

---
 srclib/apr/strings/apr_snprintf.c |   16 ++++------------
 1 file changed, 4 insertions(+), 12 deletions(-)

Index: 2.2.x/srclib/apr/strings/apr_snprintf.c
===================================================================
--- 2.2.x.orig/srclib/apr/strings/apr_snprintf.c	2007-04-27 11:09:49.000000000 -0300
+++ 2.2.x/srclib/apr/strings/apr_snprintf.c	2007-04-27 11:09:50.000000000 -0300
@@ -370,12 +370,8 @@
      * We use a do-while loop so that we write at least 1 digit 
      */
     do {
-        register u_wide_int new_magnitude = magnitude / 10;
-
-        *--p = (char) (magnitude - new_magnitude * 10 + '0');
-        magnitude = new_magnitude;
-    }
-    while (magnitude);
+        *--p = (char) '0' + (magnitude % 10);
+    } while ((magnitude /= 10));
 
     *len = buf_end - p;
     return (p);
@@ -423,12 +419,8 @@
      * We use a do-while loop so that we write at least 1 digit 
      */
     do {
-        u_widest_int new_magnitude = magnitude / 10;
-
-        *--p = (char) (magnitude - new_magnitude * 10 + '0');
-        magnitude = new_magnitude;
-    }
-    while (magnitude);
+        *--p = (char) '0' + (magnitude % 10);
+    } while ((magnitude /= 10));
 
     *len = buf_end - p;
     return (p);

--