Re: svn: /php/php-src/ branches/PHP_5_3/NEWS branches/PHP_5_3/ext/spl/spl_heap.c branches/PHP_5_3/ext/spl/tests/bug53588.phpt trunk/ext/spl/spl_heap.c
trunk/ext/spl/tests/bug53588.phpt
| From: | Christopher Jones | Date: | Tue, 21 Dec 2010 18:23:11 +0000 |
| Subject: | Re: svn: /php/php-src/ branches/PHP_5_3/NEWS branches/PHP_5_3/ext/spl/spl_heap.c branches/PHP_5_3/ext/spl/tests/bug53588.phpt trunk/ext/spl/spl_heap.c trunk/ext/spl/tests/bug53588.phpt |
||
| References: | 1 | Groups: | php.cvs |
| Request: | Send a blank email to php-cvs+get-64191@lists.php.net to get a copy of this message | ||
Hi Gustavo,
Can you review the definition of http://www.php.net/manual/en/splminheap.compare.php ?
I believe the testcase should have the operands reversed to satisfy this definition
and so the bug was bogus.
Chris
On 12/21/2010 09:29 AM, Gustavo André dos Santos Lopes wrote:
-- Email: christopher.jones@oracle.com Tel: +1 650 506 8630 Blog: http://blogs.oracle.com/opal/cataphract Tue, 21 Dec 2010 17:29:14 +0000Revision: http://svn.php.net/viewvc?view=revision&revision=306542 Log: - Fixed bug #53588 (SplMinHeap bad sorting with custom compare function). Bug: http://bugs.php.net/53588 (Assigned) SplMinHeap bad insert sort Changed paths:U php/php-src/branches/PHP_5_3/NEWS U php/php-src/branches/PHP_5_3/ext/spl/spl_heap.c A php/php-src/branches/PHP_5_3/ext/spl/tests/bug53588.phpt U php/php-src/trunk/ext/spl/spl_heap.c A php/php-src/trunk/ext/spl/tests/bug53588.phptModified: php/php-src/branches/PHP_5_3/NEWS =================================================================== --- php/php-src/branches/PHP_5_3/NEWS 2010-12-21 16:05:40 UTC (rev 306541) +++ php/php-src/branches/PHP_5_3/NEWS 2010-12-21 17:29:14 UTC (rev 306542) @@ -70,6 +70,8 @@ - SPL extension:. Fixed bug #53515 (property_exists incorrect on ArrayObject null and 0 values). (Felipe)+ . Fixed bug #53588 (SplMinHeap bad sorting with custom compare function).+ (Gustavo)- SQLite extension:. Fixed memory leaked introduced by the NULL poisoning patch (Mateusz Kocielski, Pierre)Modified: php/php-src/branches/PHP_5_3/ext/spl/spl_heap.c =================================================================== --- php/php-src/branches/PHP_5_3/ext/spl/spl_heap.c 2010-12-21 16:05:40 UTC (rev 306541) +++ php/php-src/branches/PHP_5_3/ext/spl/spl_heap.c 2010-12-21 17:29:14 UTC (rev 306542) @@ -176,7 +176,7 @@ spl_heap_object *heap_object = (spl_heap_object*)zend_object_store_get_object((zval *)object TSRMLS_CC); if (heap_object->fptr_cmp) { long lval = 0; - if (spl_ptr_heap_cmp_cb_helper((zval *)object, heap_object, (zval *)a, (zval *)b,&lval TSRMLS_CC) == FAILURE) { + if (spl_ptr_heap_cmp_cb_helper((zval *)object, heap_object, (zval *)b, (zval *)a,&lval TSRMLS_CC) == FAILURE) { /* exception or call failure */ return 0; } Added: php/php-src/branches/PHP_5_3/ext/spl/tests/bug53588.phpt ===================================================================--- php/php-src/branches/PHP_5_3/ext/spl/tests/bug53588.phpt (rev 0)+++ php/php-src/branches/PHP_5_3/ext/spl/tests/bug53588.phpt 2010-12-21 17:29:14 UTC (rev 306542) @@ -0,0 +1,23 @@ +--TEST-- +Bug #53588 (SplMinHeap bad sorting with custom compare function) +--FILE-- +<?php +class MySimpleHeap extends SplMinHeap{+ public function compare( $value1, $value2 ){ + return ( $value1 - $value2 ); + }+} + +$obj = new MySimpleHeap(); +$obj->insert( 8 ); +$obj->insert( 0 ); +$obj->insert( 4 ); + +foreach( $obj as $number ) {+ echo $number, "\n";+} +--EXPECT-- +0 +4 +8 + Modified: php/php-src/trunk/ext/spl/spl_heap.c =================================================================== --- php/php-src/trunk/ext/spl/spl_heap.c 2010-12-21 16:05:40 UTC (rev 306541) +++ php/php-src/trunk/ext/spl/spl_heap.c 2010-12-21 17:29:14 UTC (rev 306542) @@ -176,7 +176,7 @@ spl_heap_object *heap_object = (spl_heap_object*)zend_object_store_get_object((zval *)object TSRMLS_CC); if (heap_object->fptr_cmp) { long lval = 0; - if (spl_ptr_heap_cmp_cb_helper((zval *)object, heap_object, (zval *)a, (zval *)b,&lval TSRMLS_CC) == FAILURE) { + if (spl_ptr_heap_cmp_cb_helper((zval *)object, heap_object, (zval *)b, (zval *)a,&lval TSRMLS_CC) == FAILURE) { /* exception or call failure */ return 0; } Added: php/php-src/trunk/ext/spl/tests/bug53588.phpt ===================================================================--- php/php-src/trunk/ext/spl/tests/bug53588.phpt (rev 0)+++ php/php-src/trunk/ext/spl/tests/bug53588.phpt 2010-12-21 17:29:14 UTC (rev 306542) @@ -0,0 +1,23 @@ +--TEST-- +Bug #53588 (SplMinHeap bad sorting with custom compare function) +--FILE-- +<?php +class MySimpleHeap extends SplMinHeap{+ public function compare( $value1, $value2 ){ + return ( $value1 - $value2 ); + }+} + +$obj = new MySimpleHeap(); +$obj->insert( 8 ); +$obj->insert( 0 ); +$obj->insert( 4 ); + +foreach( $obj as $number ) {+ echo $number, "\n";+} +--EXPECT-- +0 +4 +8 +