]> granicus.if.org Git - php/commitdiff
- Revert of revision 306542, turns out the semantics of compare() are
authorGustavo André dos Santos Lopes <cataphract@php.net>
Tue, 21 Dec 2010 19:52:17 +0000 (19:52 +0000)
committerGustavo André dos Santos Lopes <cataphract@php.net>
Tue, 21 Dec 2010 19:52:17 +0000 (19:52 +0000)
  different in SplMinHeap and SplMaxHeap.

ext/pdo/pdo_dbh.c
ext/spl/spl_heap.c
ext/spl/tests/bug53588.phpt

index 291ffdc44f3280e96fe97fe50b8cdfc6e38115a2..620500f8d62f787d56e3a9e75610ef9d2c224130 100755 (executable)
@@ -229,6 +229,7 @@ static PHP_METHOD(PDO, dbh_constructor)
                snprintf(alt_dsn, sizeof(alt_dsn), "pdo.dsn.%s", data_source);
                if (FAILURE == cfg_get_string(alt_dsn, &ini_dsn)) {
                        zend_throw_exception_ex(php_pdo_get_exception(), 0 TSRMLS_CC, "invalid data source name");
+                       zval_dtor(object);
                        ZVAL_NULL(object);
                        return;
                }
index c162f6f069180f612c35df90596f237bbb84b621..d2fffd45a5d126a47f3023bbde806e0b5b4aeec9 100644 (file)
@@ -176,7 +176,7 @@ static int spl_ptr_heap_zval_min_cmp(spl_ptr_heap_element a, spl_ptr_heap_elemen
                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 *)b, (zval *)a, &lval TSRMLS_CC) == FAILURE) {
+                       if (spl_ptr_heap_cmp_cb_helper((zval *)object, heap_object, (zval *)a, (zval *)b, &lval TSRMLS_CC) == FAILURE) {
                                /* exception or call failure */
                                return 0;
                        }
index 1546908c35c376d60cf9ab511241f60ce6484733..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1,23 +0,0 @@
---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
-