jani            Fri, 17 Jul 2009 11:13:51 +0000

URL: http://svn.php.net/viewvc?view=revision&revision=284249

Changed paths:
        U   php/php-src/branches/PHP_5_2/NEWS
        U   php/php-src/branches/PHP_5_2/ext/standard/strnatcmp.c
        A   
php/php-src/branches/PHP_5_2/ext/standard/tests/strings/bug47481.phpt
        U   php/php-src/branches/PHP_5_3/NEWS
        U   php/php-src/branches/PHP_5_3/ext/standard/strnatcmp.c
        A   
php/php-src/branches/PHP_5_3/ext/standard/tests/strings/bug47481.phpt
        U   php/php-src/trunk/ext/standard/strnatcmp.c
        A   php/php-src/trunk/ext/standard/tests/strings/bug47481.phpt

Log:
- Fixed bug #47481 (natcasesort() does not sort extended ASCII characters
correctly)
Modified: php/php-src/branches/PHP_5_2/NEWS
===================================================================
--- php/php-src/branches/PHP_5_2/NEWS	2009-07-17 10:40:36 UTC (rev 284248)
+++ php/php-src/branches/PHP_5_2/NEWS	2009-07-17 11:13:51 UTC (rev 284249)
@@ -35,6 +35,8 @@
   errors when errors are logged). (Jani)
 - Fixed bug #48116 (Fixed build with Openssl 1.0). (Pierre,
   Al dot Smith at aeschi dot ch dot eu dot org)
+- Fixed bug #47481 (natcasesort() does not sort extended ASCII characters
+  correctly). (Herman Radtke)
 - Fixed bug #47351 (Memory leak in DateTime). (Derick, Tobias John)
 - Fixed bug #45905 (imagefilledrectangle() clipping error).
   (markril at hotmail dot com, Pierre)

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-17 10:40:36 UTC (rev 284248)
+++ php/php-src/branches/PHP_5_2/ext/standard/strnatcmp.c	2009-07-17 11:13:51 UTC (rev 284249)
@@ -101,7 +101,7 @@
  */
 PHPAPI int strnatcmp_ex(char const *a, size_t a_len, char const *b, size_t b_len, int fold_case)
 {
-	char ca, cb;
+	unsigned char ca, cb;
 	char const *ap, *bp;
 	char const *aend = a + a_len,
 			   *bend = b + b_len;

Added: php/php-src/branches/PHP_5_2/ext/standard/tests/strings/bug47481.phpt
===================================================================
--- php/php-src/branches/PHP_5_2/ext/standard/tests/strings/bug47481.phpt	                        (rev 0)
+++ php/php-src/branches/PHP_5_2/ext/standard/tests/strings/bug47481.phpt	2009-07-17 11:13:51 UTC (rev 284249)
@@ -0,0 +1,57 @@
+--TEST--
+Bug #47481 (natcasesort() does not sort extended ASCII characters correctly)
+--FILE--
+<?php
+/* Prototype  : bool natcasesort(array &$array_arg)
+ * Description: Sort an array using case-insensitive natural sort
+ * Source code: ext/standard/array.c
+ */
+
+/*
+ * Test natcasesort() with extended ASCII characters
+ */
+
+$array = array ('Süden', 'spielen','Sonne','Wind','Regen','Meer');
+echo "\n-- Before sorting: --\n";
+var_dump($array);
+
+echo "\n-- After Sorting: --\n";
+var_dump(natcasesort($array));
+var_dump($array);
+
+echo "Done";
+?>
+--EXPECTF--
+-- Before sorting: --
+array(6) {
+  [0]=>
+  %string|unicode%(6) "Süden"
+  [1]=>
+  %string|unicode%(7) "spielen"
+  [2]=>
+  %string|unicode%(5) "Sonne"
+  [3]=>
+  %string|unicode%(4) "Wind"
+  [4]=>
+  %string|unicode%(5) "Regen"
+  [5]=>
+  %string|unicode%(4) "Meer"
+}
+
+-- After Sorting: --
+bool(true)
+array(6) {
+  [5]=>
+  %string|unicode%(4) "Meer"
+  [4]=>
+  %string|unicode%(5) "Regen"
+  [2]=>
+  %string|unicode%(5) "Sonne"
+  [1]=>
+  %string|unicode%(7) "spielen"
+  [0]=>
+  %string|unicode%(6) "Süden"
+  [3]=>
+  %string|unicode%(4) "Wind"
+}
+Done


Property changes on: php/php-src/branches/PHP_5_2/ext/standard/tests/strings/bug47481.phpt
___________________________________________________________________
Added: svn:keyword
   + Id Revision Rev
Added: svn:keywords
   + Id Revision Rev

Modified: php/php-src/branches/PHP_5_3/NEWS
===================================================================
--- php/php-src/branches/PHP_5_3/NEWS	2009-07-17 10:40:36 UTC (rev 284248)
+++ php/php-src/branches/PHP_5_3/NEWS	2009-07-17 11:13:51 UTC (rev 284249)
@@ -26,6 +26,8 @@
   errors when errors are logged). (Jani)
 - Fixed bug #48116 (Fixed build with Openssl 1.0). (Pierre,
   Al dot Smith at aeschi dot ch dot eu dot org)
+- Fixed bug #47481 (natcasesort() does not sort extended ASCII characters
+  correctly). (Herman Radtke)
 - Fixed bug #47351 (Memory leak in DateTime). (Derick, Tobias John)
 - Fixed bug #46682 (touch() afield returns different values on windows).
   (Pierre)

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-17 10:40:36 UTC (rev 284248)
+++ php/php-src/branches/PHP_5_3/ext/standard/strnatcmp.c	2009-07-17 11:13:51 UTC (rev 284249)
@@ -101,7 +101,7 @@
  */
 PHPAPI int strnatcmp_ex(char const *a, size_t a_len, char const *b, size_t b_len, int fold_case)
 {
-	char ca, cb;
+	unsigned char ca, cb;
 	char const *ap, *bp;
 	char const *aend = a + a_len,
 			   *bend = b + b_len;

Added: php/php-src/branches/PHP_5_3/ext/standard/tests/strings/bug47481.phpt
===================================================================
--- php/php-src/branches/PHP_5_3/ext/standard/tests/strings/bug47481.phpt	                        (rev 0)
+++ php/php-src/branches/PHP_5_3/ext/standard/tests/strings/bug47481.phpt	2009-07-17 11:13:51 UTC (rev 284249)
@@ -0,0 +1,57 @@
+--TEST--
+Bug #47481 (natcasesort() does not sort extended ASCII characters correctly)
+--FILE--
+<?php
+/* Prototype  : bool natcasesort(array &$array_arg)
+ * Description: Sort an array using case-insensitive natural sort
+ * Source code: ext/standard/array.c
+ */
+
+/*
+ * Test natcasesort() with extended ASCII characters
+ */
+
+$array = array ('Süden', 'spielen','Sonne','Wind','Regen','Meer');
+echo "\n-- Before sorting: --\n";
+var_dump($array);
+
+echo "\n-- After Sorting: --\n";
+var_dump(natcasesort($array));
+var_dump($array);
+
+echo "Done";
+?>
+--EXPECTF--
+-- Before sorting: --
+array(6) {
+  [0]=>
+  %string|unicode%(6) "Süden"
+  [1]=>
+  %string|unicode%(7) "spielen"
+  [2]=>
+  %string|unicode%(5) "Sonne"
+  [3]=>
+  %string|unicode%(4) "Wind"
+  [4]=>
+  %string|unicode%(5) "Regen"
+  [5]=>
+  %string|unicode%(4) "Meer"
+}
+
+-- After Sorting: --
+bool(true)
+array(6) {
+  [5]=>
+  %string|unicode%(4) "Meer"
+  [4]=>
+  %string|unicode%(5) "Regen"
+  [2]=>
+  %string|unicode%(5) "Sonne"
+  [1]=>
+  %string|unicode%(7) "spielen"
+  [0]=>
+  %string|unicode%(6) "Süden"
+  [3]=>
+  %string|unicode%(4) "Wind"
+}
+Done


Property changes on: php/php-src/branches/PHP_5_3/ext/standard/tests/strings/bug47481.phpt
___________________________________________________________________
Added: svn:keyword
   + Id Revision Rev
Added: svn:keywords
   + Id Revision Rev

Modified: php/php-src/trunk/ext/standard/strnatcmp.c
===================================================================
--- php/php-src/trunk/ext/standard/strnatcmp.c	2009-07-17 10:40:36 UTC (rev 284248)
+++ php/php-src/trunk/ext/standard/strnatcmp.c	2009-07-17 11:13:51 UTC (rev 284249)
@@ -103,7 +103,7 @@
  */
 PHPAPI int strnatcmp_ex(char const *a, size_t a_len, char const *b, size_t b_len, int fold_case)
 {
-	char ca, cb;
+	unsigned char ca, cb;
 	int ai, bi;
 	int fractional, result;


Added: php/php-src/trunk/ext/standard/tests/strings/bug47481.phpt
===================================================================
--- php/php-src/trunk/ext/standard/tests/strings/bug47481.phpt	                        (rev 0)
+++ php/php-src/trunk/ext/standard/tests/strings/bug47481.phpt	2009-07-17 11:13:51 UTC (rev 284249)
@@ -0,0 +1,57 @@
+--TEST--
+Bug #47481 (natcasesort() does not sort extended ASCII characters correctly)
+--FILE--
+<?php
+/* Prototype  : bool natcasesort(array &$array_arg)
+ * Description: Sort an array using case-insensitive natural sort
+ * Source code: ext/standard/array.c
+ */
+
+/*
+ * Test natcasesort() with extended ASCII characters
+ */
+
+$array = array ('Süden', 'spielen','Sonne','Wind','Regen','Meer');
+echo "\n-- Before sorting: --\n";
+var_dump($array);
+
+echo "\n-- After Sorting: --\n";
+var_dump(natcasesort($array));
+var_dump($array);
+
+echo "Done";
+?>
+--EXPECTF--
+-- Before sorting: --
+array(6) {
+  [0]=>
+  %string|unicode%(6) "Süden"
+  [1]=>
+  %string|unicode%(7) "spielen"
+  [2]=>
+  %string|unicode%(5) "Sonne"
+  [3]=>
+  %string|unicode%(4) "Wind"
+  [4]=>
+  %string|unicode%(5) "Regen"
+  [5]=>
+  %string|unicode%(4) "Meer"
+}
+
+-- After Sorting: --
+bool(true)
+array(6) {
+  [5]=>
+  %string|unicode%(4) "Meer"
+  [4]=>
+  %string|unicode%(5) "Regen"
+  [2]=>
+  %string|unicode%(5) "Sonne"
+  [1]=>
+  %string|unicode%(7) "spielen"
+  [0]=>
+  %string|unicode%(6) "Süden"
+  [3]=>
+  %string|unicode%(4) "Wind"
+}
+Done


Property changes on: php/php-src/trunk/ext/standard/tests/strings/bug47481.phpt
___________________________________________________________________
Added: svn:keyword
   + Id Revision Rev
Added: svn:keywords
   + Id Revision Rev
-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to