]> granicus.if.org Git - php/commitdiff
Fixed reference counting
authorDmitry Stogov <dmitry@zend.com>
Thu, 22 Mar 2012 10:38:38 +0000 (14:38 +0400)
committerDmitry Stogov <dmitry@zend.com>
Thu, 22 Mar 2012 11:02:25 +0000 (15:02 +0400)
ext/spl/spl_directory.c

index c6eec945e9d171addd5dc876e789bd38fe45661f..7bd340b403d19658f200211740fab801d02a8eae 100755 (executable)
@@ -1655,8 +1655,8 @@ zend_object_iterator *spl_filesystem_dir_get_iterator(zend_class_entry *ce, zval
                /* ->current must be initialized; rewind doesn't set it and valid
                 * doesn't check whether it's set */
                iterator->current = object;
+               Z_SET_REFCOUNT_P(object, Z_REFCOUNT_P(object) + 2);
        }
-       zval_add_ref(&object);
        
        return (zend_object_iterator*)iterator;
 }
@@ -1858,8 +1858,8 @@ zend_object_iterator *spl_filesystem_tree_get_iterator(zend_class_entry *ce, zva
        if (iterator->intern.data == NULL) {
                iterator->intern.data = object;
                iterator->intern.funcs = &spl_filesystem_tree_it_funcs;
+               zval_add_ref(&object);
        }
-       zval_add_ref(&object);
        
        return (zend_object_iterator*)iterator;
 }