svn: php/php-src/ branches/PHP_5_2/ext/standard/strnatcmp.c branches/PHP_5_2/ext/standard/tests/array/bug44929.phpt
branches/PHP_5_3/ext/standard/strnatcmp.c branches/PHP_5_3/ext/standard/tests/array/bug44929.phpt trunk/ext/standard/strnatcmp.c
trunk/ext/standard/tests/array/bug44929.phpt
| From: | Rasmus Lerdorf | Date: | Tue, 21 Jul 2009 21:15:48 +0000 |
| Subject: | svn: php/php-src/ branches/PHP_5_2/ext/standard/strnatcmp.c branches/PHP_5_2/ext/standard/tests/array/bug44929.phpt branches/PHP_5_3/ext/standard/strnatcmp.c branches/PHP_5_3/ext/standard/tests/array/bug44929.phpt trunk/ext/standard/strnatcmp.c trunk/ext/standard/tests/array/bug44929.phpt |
||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-59711@lists.php.net to get a copy of this message | ||
rasmus Tue, 21 Jul 2009 21:15:48 +0000
Revision: http://svn.php.net/viewvc?view=revision&revision=284559
Log:
Fix bug #49003 by tweaking the fix to bug #44929 slightly.
A 0 followed by any punctuation is now significant instead
of just 0's in front of a period.
Bugs: http://bugs.php.net/49003 (Analyzed) natsort: sort
sequence has changed
http://bugs.php.net/49003 (Analyzed) natsort: sort
sequence has changed
Changed paths:
U php/php-src/branches/PHP_5_2/ext/standard/strnatcmp.c
U php/php-src/branches/PHP_5_2/ext/standard/tests/array/bug44929.phpt
U php/php-src/branches/PHP_5_3/ext/standard/strnatcmp.c
U php/php-src/branches/PHP_5_3/ext/standard/tests/array/bug44929.phpt
U php/php-src/trunk/ext/standard/strnatcmp.c
U php/php-src/trunk/ext/standard/tests/array/bug44929.phpt
Modified: php/php-src/branches/PHP_5_2/ext/standard/strnatcmp.c
===================================================================
--- php/php-src/branches/PHP_5_2/ext/standard/strnatcmp.c 2009-07-21 21:03:18 UTC (rev 284558)
+++ php/php-src/branches/PHP_5_2/ext/standard/strnatcmp.c 2009-07-21 21:15:48 UTC (rev 284559)
@@ -116,10 +116,10 @@
ca = *ap; cb = *bp;
/* skip over leading spaces or zeros */
- while (isspace((int)(unsigned char)ca) || (ca == '0' && (ap+1 < aend)
&& (*(ap+1)!='.')))
+ while (isspace((int)(unsigned char)ca) || (ca == '0' && (ap+1 < aend)
&& !ispunct(*(ap+1))))
ca = *++ap;
- while (isspace((int)(unsigned char)cb) || (cb == '0' && (bp+1 < bend)
&& (*(bp+1)!='.')))
+ while (isspace((int)(unsigned char)cb) || (cb == '0' && (bp+1 < bend)
&& !ispunct(*(bp+1))))
cb = *++bp;
/* process run of digits */
Modified: php/php-src/branches/PHP_5_2/ext/standard/tests/array/bug44929.phpt
===================================================================
--- php/php-src/branches/PHP_5_2/ext/standard/tests/array/bug44929.phpt 2009-07-21 21:03:18 UTC (rev
284558)
+++ php/php-src/branches/PHP_5_2/ext/standard/tests/array/bug44929.phpt 2009-07-21 21:15:48 UTC (rev
284559)
@@ -2,20 +2,24 @@
Bug #44929 (natsort doesn't handle leading zeros well)
--FILE--
<?php
-$a =
array('001','008','005','00011','03','000014','-123','0.002','00','0');
+$a =
array('001','008','005','00011','03','000014','-123','0.002','00','0','0_0','0-0');
natsort($a);
var_dump($a);
?>
--EXPECT--
-array(10) {
+array(12) {
[6]=>
string(4) "-123"
[8]=>
string(2) "00"
[9]=>
string(1) "0"
+ [11]=>
+ string(3) "0-0"
[7]=>
string(5) "0.002"
+ [10]=>
+ string(3) "0_0"
[0]=>
string(3) "001"
[4]=>
Modified: php/php-src/branches/PHP_5_3/ext/standard/strnatcmp.c
===================================================================
--- php/php-src/branches/PHP_5_3/ext/standard/strnatcmp.c 2009-07-21 21:03:18 UTC (rev 284558)
+++ php/php-src/branches/PHP_5_3/ext/standard/strnatcmp.c 2009-07-21 21:15:48 UTC (rev 284559)
@@ -116,10 +116,10 @@
ca = *ap; cb = *bp;
/* skip over leading spaces or zeros */
- while (isspace((int)(unsigned char)ca) || (ca == '0' && (ap+1 < aend)
&& (*(ap+1)!='.')))
+ while (isspace((int)(unsigned char)ca) || (ca == '0' && (ap+1 < aend)
&& !ispunct(*(ap+1))))
ca = *++ap;
- while (isspace((int)(unsigned char)cb) || (cb == '0' && (bp+1 < bend)
&& (*(bp+1)!='.')))
+ while (isspace((int)(unsigned char)cb) || (cb == '0' && (bp+1 < bend)
&& !ispunct(*(bp+1))))
cb = *++bp;
/* process run of digits */
Modified: php/php-src/branches/PHP_5_3/ext/standard/tests/array/bug44929.phpt
===================================================================
--- php/php-src/branches/PHP_5_3/ext/standard/tests/array/bug44929.phpt 2009-07-21 21:03:18 UTC (rev
284558)
+++ php/php-src/branches/PHP_5_3/ext/standard/tests/array/bug44929.phpt 2009-07-21 21:15:48 UTC (rev
284559)
@@ -2,20 +2,24 @@
Bug #44929 (natsort doesn't handle leading zeros well)
--FILE--
<?php
-$a =
array(b'001',b'008',b'005',b'00011',b'03',b'000014',b'-123',b'0.002',b'00',b'0');
+$a =
array(b'001',b'008',b'005',b'00011',b'03',b'000014',b'-123',b'0.002',b'00',b'0',b'0_0',b'0-0');
natsort($a);
var_dump($a);
?>
--EXPECT--
-array(10) {
+array(12) {
[6]=>
string(4) "-123"
[8]=>
string(2) "00"
[9]=>
string(1) "0"
+ [11]=>
+ string(3) "0-0"
[7]=>
string(5) "0.002"
+ [10]=>
+ string(3) "0_0"
[0]=>
string(3) "001"
[4]=>
Modified: php/php-src/trunk/ext/standard/strnatcmp.c
===================================================================
--- php/php-src/trunk/ext/standard/strnatcmp.c 2009-07-21 21:03:18 UTC (rev 284558)
+++ php/php-src/trunk/ext/standard/strnatcmp.c 2009-07-21 21:15:48 UTC (rev 284559)
@@ -112,10 +112,10 @@
ca = a[ai]; cb = b[bi];
/* skip over leading spaces or zeros */
- while (isspace((int)(unsigned char)ca) || ((ca == '0' && (ai+1 < a_len))
&& (a[ai+1] != '.')))
+ while (isspace((int)(unsigned char)ca) || ((ca == '0' && (ai+1 < a_len))
&& !ispunct(a[ai+1])))
ca = a[++ai];
- while (isspace((int)(unsigned char)cb) || ((cb == '0' && bi+1 < b_len)
&& (b[bi+1] != '.')))
+ while (isspace((int)(unsigned char)cb) || ((cb == '0' && bi+1 < b_len)
&& !ispunct(b[bi+1])))
cb = b[++bi];
/* process run of digits */
Modified: php/php-src/trunk/ext/standard/tests/array/bug44929.phpt
===================================================================
--- php/php-src/trunk/ext/standard/tests/array/bug44929.phpt 2009-07-21 21:03:18 UTC (rev 284558)
+++ php/php-src/trunk/ext/standard/tests/array/bug44929.phpt 2009-07-21 21:15:48 UTC (rev 284559)
@@ -2,20 +2,24 @@
Bug #44929 (natsort doesn't handle leading zeros well)
--FILE--
<?php
-$a =
array(b'001',b'008',b'005',b'00011',b'03',b'000014',b'-123',b'0.002',b'00',b'0');
+$a =
array(b'001',b'008',b'005',b'00011',b'03',b'000014',b'-123',b'0.002',b'00',b'0',b'0_0',b'0-0');
natsort($a);
var_dump($a);
?>
--EXPECT--
-array(10) {
+array(12) {
[6]=>
string(4) "-123"
[8]=>
string(2) "00"
[9]=>
string(1) "0"
+ [11]=>
+ string(3) "0-0"
[7]=>
string(5) "0.002"
+ [10]=>
+ string(3) "0_0"
[0]=>
string(3) "001"
[4]=>