]> granicus.if.org Git - php/commitdiff
Don't strip leading zeros on floating point numbers
authorRasmus Lerdorf <rasmus@php.net>
Thu, 9 Apr 2009 16:08:34 +0000 (16:08 +0000)
committerRasmus Lerdorf <rasmus@php.net>
Thu, 9 Apr 2009 16:08:34 +0000 (16:08 +0000)
and fix the test case

ext/standard/strnatcmp.c
ext/standard/tests/array/bug44929.phpt

index c9ab26f69d5b1548743f2636fbfd22d9c6ba121e..106beda5d674a2ddd46394918629b530169e8709 100644 (file)
@@ -112,10 +112,10 @@ PHPAPI int strnatcmp_ex(char const *a, size_t a_len, char const *b, size_t b_len
                ca = a[ai]; cb = b[bi];
 
                /* skip over leading spaces or zeros */
-               while (isspace((int)(unsigned char)ca) || (ca == '0' && ai+1 < a_len))
+               while (isspace((int)(unsigned char)ca) || (ca == '0' && (ai+1 < a_len)) && (a[ai+1] != '.'))
                        ca = a[++ai];
 
-               while (isspace((int)(unsigned char)cb) || (cb == '0' && bi+1 < b_len))
+               while (isspace((int)(unsigned char)cb) || (cb == '0' && bi+1 < b_len) && (b[bi+1] != '.'))
                        cb = b[++bi];
 
                /* process run of digits */
index ae71e06cffafe7a2f9bfa3178514d040d56251b9..dd2b0db077f7dc8e9af97278a6523a8c1d943a20 100644 (file)
@@ -10,12 +10,12 @@ var_dump($a);
 array(10) {
   [6]=>
   string(4) "-123"
-  [7]=>
-  string(5) "0.002"
   [8]=>
   string(2) "00"
   [9]=>
   string(1) "0"
+  [7]=>
+  string(5) "0.002"
   [0]=>
   string(3) "001"
   [4]=>