]> granicus.if.org Git - php/commitdiff
NULL is a special value for number_format() meaning "use default separator"
authorAntony Dovgal <tony2001@php.net>
Wed, 27 Dec 2006 19:07:28 +0000 (19:07 +0000)
committerAntony Dovgal <tony2001@php.net>
Wed, 27 Dec 2006 19:07:28 +0000 (19:07 +0000)
ext/standard/math.c

index f3c910a54df181e71d3df37067fd180289f5ab26..672f30e1f79fd7b95545d4fd58b48b382c87f6cd 100644 (file)
@@ -1018,30 +1018,30 @@ PHPAPI char *_php_math_number_format(double d, int dec, char dec_point, char tho
    Formats a number with grouped thousands */
 PHP_FUNCTION(number_format)
 {
-       char *sep1 = NULL, *sep2 = NULL;
-       int sep1_len, sep2_len;
+       zval *sep1 = NULL, *sep2 = NULL;
        double num;
        int dec = 0;
        char thousand_sep=',', dec_point='.';
        char *tmp;
        
-       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "d|ls&s&", &num, &dec,
-                                                         &sep1, &sep1_len, UG(ascii_conv),
-                                                         &sep2, &sep2_len, UG(ascii_conv)) == FAILURE) {
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "d|lzz", &num, &dec, &sep1, &sep2) == FAILURE) {
                return;
        }
 
-       if (sep1) {
-               if (sep1_len >= 1) {
-                       dec_point = sep1[0];
-               } else if (sep1_len == 0) {
+       if (sep1 && Z_TYPE_P(sep1) != IS_NULL) {
+               convert_to_string_with_converter(sep1, UG(ascii_conv));
+               if (Z_STRLEN_P(sep1)) {
+                       dec_point  = Z_STRVAL_P(sep1)[0];
+               } else {
                        dec_point = 0;
                }
        }
-       if (sep2) {
-               if (sep2_len >= 1) {
-                       thousand_sep = sep2[0];
-               } else if (sep2_len == 0) {
+
+       if (sep2 && Z_TYPE_P(sep2) != IS_NULL) {
+               convert_to_string_with_converter(sep2, UG(ascii_conv));
+               if (Z_STRLEN_P(sep2)) {
+                       thousand_sep = Z_STRVAL_P(sep2)[0];
+               } else {
                        thousand_sep = 0;
                }
        }