bjori Sun Nov 12 01:16:42 2006 UTC
Added files: (Branch: PHP_4_4)
/php-src/ext/standard/tests/array bug36975.phpt
Modified files:
/php-src/ext/standard array.c
/php-src NEWS
Log:
MFH: Fixed bug#36975 (natcasesort() causes array_pop() to misbehave)
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/array.c?r1=1.199.2.44.2.12&r2=1.199.2.44.2.13&diff_format=u
Index: php-src/ext/standard/array.c
diff -u php-src/ext/standard/array.c:1.199.2.44.2.12
php-src/ext/standard/array.c:1.199.2.44.2.13
--- php-src/ext/standard/array.c:1.199.2.44.2.12 Tue Sep 19 09:39:14 2006
+++ php-src/ext/standard/array.c Sun Nov 12 01:16:41 2006
@@ -22,7 +22,7 @@
*/
-/* $Id: array.c,v 1.199.2.44.2.12 2006/09/19 09:39:14 tony2001 Exp $ */
+/* $Id: array.c,v 1.199.2.44.2.13 2006/11/12 01:16:41 bjori Exp $ */
#include "php.h"
#include "php_ini.h"
@@ -1770,7 +1770,7 @@
}
Z_ARRVAL_PP(stack)->nNextFreeElement = k;
zend_hash_rehash(Z_ARRVAL_PP(stack));
- } else if (!key_len) {
+ } else if (!key_len && index >= Z_ARRVAL_PP(stack)->nNextFreeElement-1)
{
Z_ARRVAL_PP(stack)->nNextFreeElement =
Z_ARRVAL_PP(stack)->nNextFreeElement - 1;
}
http://cvs.php.net/viewvc.cgi/php-src/NEWS?r1=1.1247.2.920.2.173&r2=1.1247.2.920.2.174&diff_format=u
Index: php-src/NEWS
diff -u php-src/NEWS:1.1247.2.920.2.173 php-src/NEWS:1.1247.2.920.2.174
--- php-src/NEWS:1.1247.2.920.2.173 Thu Nov 9 19:10:56 2006
+++ php-src/NEWS Sun Nov 12 01:16:41 2006
@@ -21,6 +21,7 @@
(sj at sjaensch dot org, grzegorz dot nosek at netart dot pl, Tony).
- Fixed bug #37812 (aggregate_methods_by_list fails to take certain methods).
(Hannes)
+- Fixed bug #36975 (natcasesort() causes array_pop() to misbehave). (Hannes)
- Fixed bug #34066 (recursive array_walk causes segfault). (Tony)
17 Aug 2006, Version 4.4.4
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/tests/array/bug36975.phpt?view=markup&rev=1.1
Index: php-src/ext/standard/tests/array/bug36975.phpt
+++ php-src/ext/standard/tests/array/bug36975.phpt
--TEST--
Bug#36975 (natcasesort() causes array_pop() to misbehave)
--FILE--
<?php
$a = array('aa', 'aa', 'bb', 'bb', 'cc', 'cc');
$test = natcasesort($a);
if ($test) {
echo "natcasesort success!\n";
}
$val = array_pop($a);
$a[] = $val;
var_dump($a);
$b = array(1 => 'foo', 0 => 'baz');
array_pop($b);
$b[] = 'bar';
array_push($b, 'bar');
print_r($b);
$c = array(0, 0, 0, 0, 0);
asort($c);
array_pop($c);
$c[] = 'foo';
$c[] = 'bar';
var_dump($c);
?>
--EXPECT--
natcasesort success!
array(6) {
[0]=>
string(2) "aa"
[1]=>
string(2) "aa"
[3]=>
string(2) "bb"
[2]=>
string(2) "bb"
[5]=>
string(2) "cc"
[6]=>
string(2) "cc"
}
Array
(
[1] => foo
[2] => bar
[3] => bar
)
array(6) {
[4]=>
int(0)
[3]=>
int(0)
[2]=>
int(0)
[1]=>
int(0)
[5]=>
string(3) "foo"
[6]=>
string(3) "bar"
}
--UEXPECT--
natcasesort success!
array(6) {
[0]=>
unicode(2) "aa"
[1]=>
unicode(2) "aa"
[3]=>
unicode(2) "bb"
[2]=>
unicode(2) "bb"
[5]=>
unicode(2) "cc"
[6]=>
unicode(2) "cc"
}
Array
(
[1] => foo
[2] => bar
[3] => bar
)
array(6) {
[4]=>
int(0)
[3]=>
int(0)
[2]=>
int(0)
[1]=>
int(0)
[5]=>
unicode(3) "foo"
[6]=>
unicode(3) "bar"
}
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php