From: Rasmus Lerdorf Date: Wed, 8 Apr 2009 18:16:06 +0000 (+0000) Subject: Fixed bug #44929 - Better handling of leading zeros X-Git-Tag: php-5.2.10RC1~228 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=9f9266cd88789c344c72635828408bd62efbd795;p=php Fixed bug #44929 - Better handling of leading zeros --- diff --git a/ext/standard/strnatcmp.c b/ext/standard/strnatcmp.c index e1f491a3df..dbed3c71cc 100644 --- a/ext/standard/strnatcmp.c +++ b/ext/standard/strnatcmp.c @@ -116,10 +116,10 @@ PHPAPI int strnatcmp_ex(char const *a, size_t a_len, char const *b, size_t b_len ca = *ap; cb = *bp; /* skip over leading spaces or zeros */ - while (isspace((int)(unsigned char)ca)) + while (isspace((int)(unsigned char)ca) || (ca == '0' && ap+1 < aend)) ca = *++ap; - while (isspace((int)(unsigned char)cb)) + while (isspace((int)(unsigned char)cb) || (cb == '0' && bp+1 < bend)) cb = *++bp; /* process run of digits */ diff --git a/ext/standard/tests/array/bug44929.phpt b/ext/standard/tests/array/bug44929.phpt new file mode 100644 index 0000000000..ae71e06cff --- /dev/null +++ b/ext/standard/tests/array/bug44929.phpt @@ -0,0 +1,31 @@ +--TEST-- +Bug #44929 (natsort doesn't handle leading zeros well) +--FILE-- + +--EXPECT-- +array(10) { + [6]=> + string(4) "-123" + [7]=> + string(5) "0.002" + [8]=> + string(2) "00" + [9]=> + string(1) "0" + [0]=> + string(3) "001" + [4]=> + string(2) "03" + [2]=> + string(3) "005" + [1]=> + string(3) "008" + [3]=> + string(5) "00011" + [5]=> + string(6) "000014" +}