From 70c7e179dec716e60bad4411933c507b3da76d8f Mon Sep 17 00:00:00 2001 From: Rasmus Lerdorf Date: Wed, 8 Apr 2009 18:10:46 +0000 Subject: [PATCH] Fixed bug #44929 - Better handling of leading zeros --- ext/standard/strnatcmp.c | 4 ++-- ext/standard/tests/array/bug44929.phpt | 31 ++++++++++++++++++++++++++ ext/standard/var_unserializer.c | 2 +- 3 files changed, 34 insertions(+), 3 deletions(-) create mode 100644 ext/standard/tests/array/bug44929.phpt 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" +} diff --git a/ext/standard/var_unserializer.c b/ext/standard/var_unserializer.c index 5292b5a529..9bde6cbdc3 100644 --- a/ext/standard/var_unserializer.c +++ b/ext/standard/var_unserializer.c @@ -1,4 +1,4 @@ -/* Generated by re2c 0.13.5 on Tue Mar 17 15:55:10 2009 */ +/* Generated by re2c 0.13.5 on Wed Apr 8 09:34:35 2009 */ #line 1 "ext/standard/var_unserializer.re" /* +----------------------------------------------------------------------+ -- 2.40.0