]> granicus.if.org Git - php/commitdiff
fix leak
authorAntony Dovgal <tony2001@php.net>
Wed, 22 Mar 2006 23:12:03 +0000 (23:12 +0000)
committerAntony Dovgal <tony2001@php.net>
Wed, 22 Mar 2006 23:12:03 +0000 (23:12 +0000)
ext/spl/spl_array.c

index 0491fc70f42e4dd439bcbccfa16a366e1e722e3e..f1d056e57fd2e865f57eeb9ba45bc22deaa381f9 100755 (executable)
@@ -260,14 +260,13 @@ static zval *spl_array_read_dimension_ex(int check_inherited, zval *object, zval
                if (intern->fptr_offset_get) {
                        zval *rv;
                        zend_call_method_with_1_params(&object, Z_OBJCE_P(object), &intern->fptr_offset_get, "offsetGet", &rv, offset); 
-                       zval_ptr_dtor(&intern->retval);
-                       MAKE_STD_ZVAL(intern->retval);
                        if (rv) {
+                               zval_ptr_dtor(&intern->retval);
+                               MAKE_STD_ZVAL(intern->retval);
                                ZVAL_ZVAL(intern->retval, rv, 1, 1);
-                       } else {
-                               ZVAL_NULL(intern->retval);
+                               return intern->retval;
                        }
-                       return intern->retval;
+                       return EG(uninitialized_zval_ptr);
                }
        }
        return *spl_array_get_dimension_ptr_ptr(check_inherited, object, offset, type TSRMLS_CC);