]> granicus.if.org Git - php/commitdiff
Fixed object destruction
authorDmitry Stogov <dmitry@zend.com>
Tue, 18 Feb 2014 18:35:54 +0000 (22:35 +0400)
committerDmitry Stogov <dmitry@zend.com>
Tue, 18 Feb 2014 18:35:54 +0000 (22:35 +0400)
Zend/zend_objects.c
Zend/zend_objects_API.c

index 1f30477a59e7cc91a4156d8d19ddb5eddba4cd04..2d14a6802c999ed6c7c9f4a560c0ea49d5698606 100644 (file)
@@ -30,6 +30,7 @@ ZEND_API void zend_object_std_init(zend_object *object, zend_class_entry *ce TSR
 {
        object->gc.refcount = 1;
        object->gc.u.v.type = IS_OBJECT;
+       object->gc.u.v.flags = 0;
        object->gc.u.v.buffer = 0;
        object->ce = ce;
        object->properties = NULL;
index 4480512f391c4dfb8270649a5b587e59c6aaf7c0..f617e92da6ad690a0da8f2d0bd5bb3a70309bbb8 100644 (file)
@@ -147,6 +147,8 @@ ZEND_API void zend_objects_store_del(zend_object *object TSRMLS_DC) /* {{{ */
                        }
                        
                        if (object->gc.refcount == 0) {
+                               zend_uint handle = object->handle;
+
 //???                          GC_REMOVE_ZOBJ_FROM_BUFFER(obj);
                                if (object->handlers->free_obj) {
                                        zend_try {
@@ -155,7 +157,7 @@ ZEND_API void zend_objects_store_del(zend_object *object TSRMLS_DC) /* {{{ */
                                                failure = 1;
                                        } zend_end_try();
                                }
-                               ZEND_OBJECTS_STORE_ADD_TO_FREE_LIST(object->handle);
+                               ZEND_OBJECTS_STORE_ADD_TO_FREE_LIST(handle);
                        }
                        
                        if (failure) {