mirror of
https://github.com/php/php-src.git
synced 2025-08-16 05:58:45 +02:00
everted (this part was committed by mistake)
This commit is contained in:
parent
f4dc0f293d
commit
caee59b856
1 changed files with 13 additions and 13 deletions
|
@ -158,7 +158,8 @@ ZEND_API void zend_objects_store_add_ref_by_handle(zend_object_handle handle TSR
|
||||||
|
|
||||||
#define ZEND_OBJECTS_STORE_ADD_TO_FREE_LIST() \
|
#define ZEND_OBJECTS_STORE_ADD_TO_FREE_LIST() \
|
||||||
EG(objects_store).object_buckets[handle].bucket.free_list.next = EG(objects_store).free_list_head; \
|
EG(objects_store).object_buckets[handle].bucket.free_list.next = EG(objects_store).free_list_head; \
|
||||||
EG(objects_store).free_list_head = handle;
|
EG(objects_store).free_list_head = handle; \
|
||||||
|
EG(objects_store).object_buckets[handle].valid = 0;
|
||||||
|
|
||||||
ZEND_API void zend_objects_store_del_ref(zval *zobject TSRMLS_DC)
|
ZEND_API void zend_objects_store_del_ref(zval *zobject TSRMLS_DC)
|
||||||
{
|
{
|
||||||
|
@ -185,12 +186,13 @@ ZEND_API void zend_objects_store_del_ref_by_handle(zend_object_handle handle TSR
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
obj = &EG(objects_store).object_buckets[handle].bucket.obj;
|
||||||
|
|
||||||
/* Make sure we hold a reference count during the destructor call
|
/* Make sure we hold a reference count during the destructor call
|
||||||
otherwise, when the destructor ends the storage might be freed
|
otherwise, when the destructor ends the storage might be freed
|
||||||
when the refcount reaches 0 a second time
|
when the refcount reaches 0 a second time
|
||||||
*/
|
*/
|
||||||
if (EG(objects_store).object_buckets[handle].valid) {
|
if (EG(objects_store).object_buckets[handle].valid) {
|
||||||
obj = &EG(objects_store).object_buckets[handle].bucket.obj;
|
|
||||||
if (obj->refcount == 1) {
|
if (obj->refcount == 1) {
|
||||||
if (!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;
|
EG(objects_store).object_buckets[handle].destructor_called = 1;
|
||||||
|
@ -204,7 +206,6 @@ ZEND_API void zend_objects_store_del_ref_by_handle(zend_object_handle handle TSR
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (obj->refcount == 1) {
|
if (obj->refcount == 1) {
|
||||||
EG(objects_store).object_buckets[handle].valid = 0;
|
|
||||||
GC_REMOVE_ZOBJ_FROM_BUFFER(obj);
|
GC_REMOVE_ZOBJ_FROM_BUFFER(obj);
|
||||||
if (obj->free_storage) {
|
if (obj->free_storage) {
|
||||||
zend_try {
|
zend_try {
|
||||||
|
@ -216,20 +217,19 @@ ZEND_API void zend_objects_store_del_ref_by_handle(zend_object_handle handle TSR
|
||||||
ZEND_OBJECTS_STORE_ADD_TO_FREE_LIST();
|
ZEND_OBJECTS_STORE_ADD_TO_FREE_LIST();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
obj->refcount--;
|
obj->refcount--;
|
||||||
|
|
||||||
#if ZEND_DEBUG_OBJECTS
|
#if ZEND_DEBUG_OBJECTS
|
||||||
if (obj->refcount == 0) {
|
if (obj->refcount == 0) {
|
||||||
fprintf(stderr, "Deallocated object id #%d\n", handle);
|
fprintf(stderr, "Deallocated object id #%d\n", handle);
|
||||||
} else {
|
} else {
|
||||||
fprintf(stderr, "Decreased refcount of object id #%d\n", handle);
|
fprintf(stderr, "Decreased refcount of object id #%d\n", handle);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
if (failure) {
|
||||||
if (failure) {
|
zend_bailout();
|
||||||
zend_bailout();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue