Browse Source

Fix the number format fix when the number of decimal places is 0.

# Thanks to Edin for his telepathy!
PHP-5
Wez Furlong 24 years ago
parent
commit
cf9f784ecd
  1. 23
      ext/standard/math.c

23
ext/standard/math.c

@ -1014,7 +1014,11 @@ PHPAPI char *_php_math_number_format(double d, int dec, char dec_point, char tho
integral += integral / 3;
}
reslen = integral + 1 + dec;
reslen = integral;
if (dec) {
reslen += 1 + dec;
}
/* add a byte for minus sign */
if (is_negative) {
@ -1034,21 +1038,24 @@ PHPAPI char *_php_math_number_format(double d, int dec, char dec_point, char tho
int topad = declen > 0 ? dec - declen : 0;
/* pad with '0's */
while (topad--) {
*t-- = '0';
}
/* now copy the chars after the point */
memcpy(t - declen + 1, dp + 1, declen);
t -= declen;
s -= declen;
if (dp) {
/* now copy the chars after the point */
memcpy(t - declen + 1, dp + 1, declen);
t -= declen;
s -= declen;
}
/* add decimal point */
*t-- = dec_point;
s--;
}
/* copy the numbers before the decimal place, adding thousand
* separator every three digits */
while(s >= tmpbuf) {
@ -1064,7 +1071,7 @@ PHPAPI char *_php_math_number_format(double d, int dec, char dec_point, char tho
}
efree(tmpbuf);
return resbuf;
}

Loading…
Cancel
Save