From: Rasmus Lerdorf Date: Thu, 9 Apr 2009 16:08:34 +0000 (+0000) Subject: Don't strip leading zeros on floating point numbers X-Git-Tag: php-5.4.0alpha1~191^2~3941 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e965a7d95c8a42625e33e67d4d2d880cbdd9be68;p=php Don't strip leading zeros on floating point numbers and fix the test case --- diff --git a/ext/standard/strnatcmp.c b/ext/standard/strnatcmp.c index c9ab26f69d..106beda5d6 100644 --- a/ext/standard/strnatcmp.c +++ b/ext/standard/strnatcmp.c @@ -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 */ diff --git a/ext/standard/tests/array/bug44929.phpt b/ext/standard/tests/array/bug44929.phpt index ae71e06cff..dd2b0db077 100644 --- a/ext/standard/tests/array/bug44929.phpt +++ b/ext/standard/tests/array/bug44929.phpt @@ -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]=>