#12572 [Opn]: sort() doesn't reindex 1 element arrays at 0
| From: | adam at trachtenberg dot com | Date: | Wed, 14 Aug 2002 15:44:37 +0000 |
| Subject: | #12572 [Opn]: sort() doesn't reindex 1 element arrays at 0 | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-16782@lists.php.net to get a copy of this message | ||
ID: 12572
User updated by: adam@trachtenberg.com
Reported By: adam@trachtenberg.com
Status: Open
Bug Type: Scripting Engine problem
-Operating System: Redhat Linux 7.0
+Operating System: Redhat Linux 7.3
PHP Version: 4.2.2
New Comment:
Updating OS; I'm now running RH 7.3
Previous Comments:
------------------------------------------------------------------------
[2002-08-14 09:22:04] kalowsky@php.net
Updating the version
------------------------------------------------------------------------
[2002-08-14 01:17:46] adam@trachtenberg.com
I just tested it with the latest CVS and it still happens.
------------------------------------------------------------------------
[2002-08-13 23:45:45] kalowsky@php.net
This bug has been fixed in CVS. You can grab a snapshot of the
CVS version at http://snaps.php.net/. In case this was a
documentation
problem, the fix will show up soon at http://www.php.net/manual/.
In case this was a PHP.net website problem, the change will show
up on the PHP.net site and on the mirror sites.
Thank you for the report, and for helping us make PHP better.
I believe rodif_bl fixed this in the current CVS. Give it a try if you
can.
------------------------------------------------------------------------
[2001-10-21 01:47:06] sniper@php.net
Reproduced with PHP 4.1.0RC1
------------------------------------------------------------------------
[2001-08-05 01:21:24] adam@trachtenberg.com
sort() reindexes arrays of length > 1 at 0, but doesn't do
this for 1 element arrays. The following patch, fixes this
minor inconsistancy. Please review it carefully, my C is
rusty and I don't normally play with these files. It does
build and seem to run correctly for me, with limited testing.
-adam
Here is an example:
$array = array(2 => 'foo', 'bar');
sort($array);
print_r($array);
Array
(
[0] => bar
[1] => foo
)
But,
$array = array(2 => 'foo');
sort($array);
print_r($array);
Array
(
[2] => foo
)
--- zend_hash.c Sun Aug 5 01:17:22 2001
+++ /home/adam/zend_hash.c Sun Aug 5 00:54:21 2001
@@ -1097,6 +1097,13 @@
IS_CONSISTENT(ht);
if (ht->nNumOfElements <= 1) { /* Doesn't require sorting */
+
if (ht->nNumOfElements == 1 && renumber) { /* Renumber 1
element arrays to O */
+
p = ht->pListHead;
+
p->nKeyLength = 0;
+
p->h = 0;
+
ht->nNextFreeElement = 1;
+
zend_hash_rehash(ht);
+
}
return SUCCESS;
}
arTmp = (Bucket **) pemalloc(ht->nNumOfElements *
sizeof(Bucket *), ht->persistent);
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=12572&edit=1