- Fix crash in destructors(). You can't throw an exception in destructors

as there is no guaranteed time when the destructor will be called.
This commit is contained in:
Andi Gutmans 2004-03-01 19:45:07 +00:00
parent 161ed69721
commit 8912a50bf4

View file

@ -68,7 +68,15 @@ ZEND_API void zend_objects_destroy_object(zend_object *object, zend_object_handl
zobj.value.obj.handlers = &std_object_handlers; zobj.value.obj.handlers = &std_object_handlers;
INIT_PZVAL(obj); INIT_PZVAL(obj);
if (EG(exception)) {
zval_ptr_dtor(&EG(exception));
EG(exception) = NULL;
}
zend_call_method_with_0_params(&obj, object->ce, NULL, "__destruct", NULL); zend_call_method_with_0_params(&obj, object->ce, NULL, "__destruct", NULL);
if (EG(exception)) {
zval_ptr_dtor(&EG(exception));
EG(exception) = NULL;
}
} }
} }