diff options
author | Ilia Alshanetsky <iliaa@php.net> | 2004-07-15 01:26:03 +0000 |
---|---|---|
committer | Ilia Alshanetsky <iliaa@php.net> | 2004-07-15 01:26:03 +0000 |
commit | a75608c1de2b34a1c48bcb8ca474449a1566d5f0 (patch) | |
tree | 8a26b49cc14ef537cb4ed4050781feb4594b4411 | |
parent | 5a9875f293e0cf664315ca2b54a5165d8c1f626d (diff) | |
download | php-git-a75608c1de2b34a1c48bcb8ca474449a1566d5f0.tar.gz |
Fixed Bug #29075 (strnatcmp() incorrectly handles whitespace).
# Original Patch by: curt@php.net
-rw-r--r-- | ext/standard/strnatcmp.c | 6 | ||||
-rw-r--r-- | ext/standard/tests/strings/bug29075.phpt | 14 |
2 files changed, 17 insertions, 3 deletions
diff --git a/ext/standard/strnatcmp.c b/ext/standard/strnatcmp.c index f0cc8f8672..e1f491a3df 100644 --- a/ext/standard/strnatcmp.c +++ b/ext/standard/strnatcmp.c @@ -153,13 +153,13 @@ PHPAPI int strnatcmp_ex(char const *a, size_t a_len, char const *b, size_t b_len return +1; ++ap; ++bp; - if (ap == aend && bp == bend) + if (ap >= aend && bp >= bend) /* The strings compare the same. Perhaps the caller will want to call strcmp to break the tie. */ return 0; - else if (ap == aend) + else if (ap >= aend) return -1; - else if (bp == bend) + else if (bp >= bend) return 1; } } diff --git a/ext/standard/tests/strings/bug29075.phpt b/ext/standard/tests/strings/bug29075.phpt new file mode 100644 index 0000000000..7fe7da6c49 --- /dev/null +++ b/ext/standard/tests/strings/bug29075.phpt @@ -0,0 +1,14 @@ +--TEST-- +Bug #29075 (strnatcmp() incorrectly handles whitespace) +--FILE-- +<?php + var_dump( + strnatcmp('foo ', 'foo '), + strnatcmp('foo', 'foo'), + strnatcmp(' foo', ' foo') + ); +?> +--EXPECT-- +int(0) +int(0) +int(0) |