]> granicus.if.org Git - php/commitdiff
- Fix memleak
authorMarcus Boerger <helly@php.net>
Thu, 22 Dec 2005 00:35:37 +0000 (00:35 +0000)
committerMarcus Boerger <helly@php.net>
Thu, 22 Dec 2005 00:35:37 +0000 (00:35 +0000)
ext/spl/spl_iterators.c

index da9fef123a6d571730904e8de373d4347c65e1e0..9923e1b66e1dcd998b4fc808b9f971bac54ea1fa 100755 (executable)
@@ -384,6 +384,9 @@ SPL_METHOD(RecursiveIteratorIterator, __construct)
                iterator = NULL;
        }
        if (!iterator || !instanceof_function(Z_OBJCE_P(iterator), spl_ce_RecursiveIterator TSRMLS_CC)) {
+               if (iterator && !inc_refcount) {
+                       zval_ptr_dtor(&iterator);
+               }
                php_set_error_handling(EH_NORMAL, NULL TSRMLS_CC);
                zend_throw_exception(spl_ce_InvalidArgumentException, "An instance of RecursiveIterator or IteratorAggregate creating it is required", 0 TSRMLS_CC);
                return;