sniper Thu Jul 17 21:37:44 2003 EDT Modified files: (Branch: PHP_4_3) /php-src/main snprintf.c Log: MFH: Fixed bug #24640 (var_export and var_dump can not output large float). (Marcus) Index: php-src/main/snprintf.c diff -u php-src/main/snprintf.c:1.17.4.5 php-src/main/snprintf.c:1.17.4.6 --- php-src/main/snprintf.c:1.17.4.5 Sun Jun 29 21:05:02 2003 +++ php-src/main/snprintf.c Thu Jul 17 21:37:44 2003 @@ -1,3 +1,25 @@ +/* + +----------------------------------------------------------------------+ + | PHP Version 4 | + +----------------------------------------------------------------------+ + | Copyright (c) 1997-2003 The PHP Group | + +----------------------------------------------------------------------+ + | This source file is subject to version 2.02 of the PHP license, | + | that is bundled with this package in the file LICENSE, and is | + | available at through the world-wide-web at | + | http://www.php.net/license/2_02.txt. | + | If you did not receive a copy of the PHP license and are unable to | + | obtain it through the world-wide-web, please send a note to | + | [EMAIL PROTECTED] so we can mail you a copy immediately. | + +----------------------------------------------------------------------+ + | Author: | + +----------------------------------------------------------------------+ + + $Id: snprintf.c,v 1.17.4.6 2003/07/18 01:37:44 sniper Exp $ +*/ + +/* $Id: snprintf.c,v 1.17.4.6 2003/07/18 01:37:44 sniper Exp $ */ + /* ==================================================================== * Copyright (c) 1995-1998 The Apache Group. All rights reserved. * @@ -132,6 +154,8 @@ return (p); } +/* If you change this value then also change bug24640.phpt. + */ #define NDIG 80 @@ -271,6 +295,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; @@ -290,9 +315,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