if (obj->dtor && obj->object) {
obj->refcount++;
obj->dtor(obj->object, i TSRMLS_CC);
+ obj = &objects->object_buckets[i].bucket.obj;
obj->refcount--;
}
}
} zend_end_try();
}
}
+
+ /* re-read the object from the object store as the store might have been reallocated in the dtor */
+ obj = &EG(objects_store).object_buckets[handle].bucket.obj;
+
if (obj->refcount == 1) {
GC_REMOVE_ZOBJ_FROM_BUFFER(obj);
if (obj->free_storage) {
}
obj->clone(obj->object, &new_object TSRMLS_CC);
+ obj = &EG(objects_store).object_buckets[handle].bucket.obj;
retval.handle = zend_objects_store_put(new_object, obj->dtor, obj->free_storage, obj->clone TSRMLS_CC);
retval.handlers = Z_OBJ_HT_P(zobject);