]> granicus.if.org Git - php/commitdiff
- First try at solving problem with different objects being allocated the
authorAndi Gutmans <andi@php.net>
Sun, 7 Jul 2002 19:34:34 +0000 (19:34 +0000)
committerAndi Gutmans <andi@php.net>
Sun, 7 Jul 2002 19:34:34 +0000 (19:34 +0000)
- same id.

Zend/zend_objects_API.c

index e37e827486fc24b854689e2795c91b46589a4f79..8b2dd624d6ea0eab1e70d6c8a04d8ea1d339fde7 100644 (file)
@@ -115,12 +115,14 @@ void zend_objects_store_del_ref(zval *zobject TSRMLS_DC)
        
        if (--obj->refcount == 0) {
                if (EG(objects_store).object_buckets[handle].valid) {
-                       if(obj->dtor && !EG(objects_store).object_buckets[handle].destructor_called) {
+                       if(!EG(objects_store).object_buckets[handle].destructor_called) {
                                EG(objects_store).object_buckets[handle].destructor_called = 1;
-                               obj->dtor(obj->object, handle TSRMLS_CC);
+                               if (obj->dtor) {
+                                       obj->dtor(obj->object, handle 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