From: Marcus Boerger Date: Wed, 25 Feb 2004 21:39:59 +0000 (+0000) Subject: As Andi found out the dtor may increase the refcount. X-Git-Tag: RELEASE_0_2_0~158 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ccef2cfb67019ab91826389e8111727c82581a78;p=php As Andi found out the dtor may increase the refcount. --- diff --git a/Zend/zend_objects_API.c b/Zend/zend_objects_API.c index 330879cc0c..d6e1782cb8 100644 --- a/Zend/zend_objects_API.c +++ b/Zend/zend_objects_API.c @@ -134,16 +134,17 @@ ZEND_API void zend_objects_store_del_ref(zval *zobject TSRMLS_DC) obj->dtor(obj->object, handle TSRMLS_CC); } } - if (obj->free_storage) { - obj->free_storage(obj->object TSRMLS_CC); + if (obj->refcount == 0) { + if (obj->free_storage) { + obj->free_storage(obj->object TSRMLS_CC); + } + ZEND_OBJECTS_STORE_ADD_TO_FREE_LIST(); } - ZEND_OBJECTS_STORE_ADD_TO_FREE_LIST(); -#if ZEND_DEBUG_OBJECTS - fprintf(stderr, "Deallocated object id #%d\n", handle); -#endif } #if ZEND_DEBUG_OBJECTS - else { + if (obj->refcount == 0) { + fprintf(stderr, "Deallocated object id #%d\n", handle); + } else { fprintf(stderr, "Decreased refcount of object id #%d\n", handle); } #endif