diff options
Diffstat (limited to 'Zend/zend_objects_API.c')
-rw-r--r-- | Zend/zend_objects_API.c | 22 |
1 files changed, 4 insertions, 18 deletions
diff --git a/Zend/zend_objects_API.c b/Zend/zend_objects_API.c index 3aedba1bda..53a0c3be23 100644 --- a/Zend/zend_objects_API.c +++ b/Zend/zend_objects_API.c @@ -152,18 +152,12 @@ ZEND_API void zend_objects_store_del(zend_object *object) /* {{{ */ if (EG(objects_store).object_buckets && IS_OBJ_VALID(EG(objects_store).object_buckets[object->handle])) { if (GC_REFCOUNT(object) == 0) { - int failure = 0; - if (!(GC_FLAGS(object) & IS_OBJ_DESTRUCTOR_CALLED)) { GC_FLAGS(object) |= IS_OBJ_DESTRUCTOR_CALLED; if (object->handlers->dtor_obj) { GC_REFCOUNT(object)++; - zend_try { - object->handlers->dtor_obj(object); - } zend_catch { - failure = 1; - } zend_end_try(); + object->handlers->dtor_obj(object); GC_REFCOUNT(object)--; } } @@ -176,13 +170,9 @@ ZEND_API void zend_objects_store_del(zend_object *object) /* {{{ */ if (!(GC_FLAGS(object) & IS_OBJ_FREE_CALLED)) { GC_FLAGS(object) |= IS_OBJ_FREE_CALLED; if (object->handlers->free_obj) { - zend_try { - GC_REFCOUNT(object)++; - object->handlers->free_obj(object); - GC_REFCOUNT(object)--; - } zend_catch { - failure = 1; - } zend_end_try(); + GC_REFCOUNT(object)++; + object->handlers->free_obj(object); + GC_REFCOUNT(object)--; } } ptr = ((char*)object) - object->handlers->offset; @@ -190,10 +180,6 @@ ZEND_API void zend_objects_store_del(zend_object *object) /* {{{ */ efree(ptr); ZEND_OBJECTS_STORE_ADD_TO_FREE_LIST(handle); } - - if (failure) { - zend_bailout(); - } } else { GC_REFCOUNT(object)--; } |