helly           Thu Jul 17 17:26:25 2003 EDT

  Modified files:              
    /php-src/main       snprintf.c 
  Log:
  Fix text output of numbers with absolute exponent greater than or equal 80.
  #
  # Probably not last conclusion on wisdom. But i looked up current apache
  # sources and they have the same error and so this must do the trick.
  #
  
  
Index: php-src/main/snprintf.c
diff -u php-src/main/snprintf.c:1.24 php-src/main/snprintf.c:1.25
--- php-src/main/snprintf.c:1.24        Sun Jun 29 21:03:21 2003
+++ php-src/main/snprintf.c     Thu Jul 17 17:26:25 2003
@@ -16,7 +16,7 @@
   +----------------------------------------------------------------------+
 */
 
-/* $Id: snprintf.c,v 1.24 2003/06/30 01:03:21 iliaa Exp $ */
+/* $Id: snprintf.c,v 1.25 2003/07/17 21:26:25 helly Exp $ */
 
 /* ====================================================================
  * Copyright (c) 1995-1998 The Apache Group.  All rights reserved.
@@ -152,6 +152,8 @@
        return (p);
 }
 
+/* If you change this value then also change bug24640.phpt.
+ */
 #define        NDIG    80
 
 
@@ -291,6 +293,7 @@
 ap_php_cvt(double arg, int ndigits, int *decpt, int *sign, int eflag, char *buf)
 {
        register int r2;
+       int mvl;
        double fi, fj;
        register char *p, *p1;
 
@@ -310,9 +313,16 @@
         */
        if (fi != 0) {
                p1 = &buf[NDIG];
-               while (p1 > &buf[0] && fi != 0) {
+               while (fi != 0) {
                        fj = modf(fi / 10, &fi);
-                       *--p1 = (int) ((fj + .03) * 10) + '0';
+                       if (p1 > &buf[0]) {
+                               *--p1 = (int) ((fj + .03) * 10) + '0';
+                       } else {
+                               mvl = NDIG - ndigits;
+                               memmove(&buf[mvl], &buf[0], NDIG-mvl-1);
+                               p1 += mvl;
+                               *--p1 = (int) ((fj + .03) * 10) + '0';
+                       }
                        r2++;
                }
                while (p1 < &buf[NDIG])



-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to