summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRasmus Lerdorf <rasmus@php.net>2009-04-09 16:08:34 +0000
committerRasmus Lerdorf <rasmus@php.net>2009-04-09 16:08:34 +0000
commite965a7d95c8a42625e33e67d4d2d880cbdd9be68 (patch)
tree1ea9eaacc23e90e4ffd8d65da312b34292fdc947
parent775421e8214acf5146cd59d64f28f56b936252ac (diff)
downloadphp-git-e965a7d95c8a42625e33e67d4d2d880cbdd9be68.tar.gz
Don't strip leading zeros on floating point numbers
and fix the test case
-rw-r--r--ext/standard/strnatcmp.c4
-rw-r--r--ext/standard/tests/array/bug44929.phpt4
2 files changed, 4 insertions, 4 deletions
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]=>