]> granicus.if.org Git - php/commitdiff
Replace checks with asserts
authorDmitry Stogov <dmitry@zend.com>
Tue, 16 Jan 2018 08:39:51 +0000 (11:39 +0300)
committerDmitry Stogov <dmitry@zend.com>
Tue, 16 Jan 2018 08:39:51 +0000 (11:39 +0300)
Zend/zend_objects_API.c

index b970f0da8c0b1fa00f552f4809a7443bc46e4bf3..a8d9d0ea2532aa5d4283229a4860d580eadf0474 100644 (file)
@@ -160,42 +160,39 @@ ZEND_API void ZEND_FASTCALL zend_objects_store_del(zend_object *object) /* {{{ *
                otherwise, when the destructor ends the storage might be freed
                when the refcount reaches 0 a second time
         */
-       if (EG(objects_store).object_buckets &&
-           IS_OBJ_VALID(EG(objects_store).object_buckets[object->handle])) {
-               if (GC_REFCOUNT(object) == 0) {
-                       if (!(GC_FLAGS(object) & IS_OBJ_DESTRUCTOR_CALLED)) {
-                               GC_FLAGS(object) |= IS_OBJ_DESTRUCTOR_CALLED;
-
-                               if (object->handlers->dtor_obj
-                                && (object->handlers->dtor_obj != zend_objects_destroy_object
-                                 || object->ce->destructor)) {
-                                       GC_ADDREF(object);
-                                       object->handlers->dtor_obj(object);
-                                       GC_DELREF(object);
-                               }
-                       }
+       ZEND_ASSERT(EG(objects_store).object_buckets != NULL);
+       ZEND_ASSERT(IS_OBJ_VALID(EG(objects_store).object_buckets[object->handle]));
+       ZEND_ASSERT(GC_REFCOUNT(object) == 0);
+
+       if (!(GC_FLAGS(object) & IS_OBJ_DESTRUCTOR_CALLED)) {
+               GC_FLAGS(object) |= IS_OBJ_DESTRUCTOR_CALLED;
+
+               if (object->handlers->dtor_obj
+                && (object->handlers->dtor_obj != zend_objects_destroy_object
+                 || object->ce->destructor)) {
+                       GC_ADDREF(object);
+                       object->handlers->dtor_obj(object);
+                       GC_DELREF(object);
+               }
+       }
 
-                       if (GC_REFCOUNT(object) == 0) {
-                               uint32_t handle = object->handle;
-                               void *ptr;
-
-                               EG(objects_store).object_buckets[handle] = SET_OBJ_INVALID(object);
-                               if (!(GC_FLAGS(object) & IS_OBJ_FREE_CALLED)) {
-                                       GC_FLAGS(object) |= IS_OBJ_FREE_CALLED;
-                                       if (object->handlers->free_obj) {
-                                               GC_ADDREF(object);
-                                               object->handlers->free_obj(object);
-                                               GC_DELREF(object);
-                                       }
-                               }
-                               ptr = ((char*)object) - object->handlers->offset;
-                               GC_REMOVE_FROM_BUFFER(object);
-                               efree(ptr);
-                               ZEND_OBJECTS_STORE_ADD_TO_FREE_LIST(handle);
+       if (GC_REFCOUNT(object) == 0) {
+               uint32_t handle = object->handle;
+               void *ptr;
+
+               EG(objects_store).object_buckets[handle] = SET_OBJ_INVALID(object);
+               if (!(GC_FLAGS(object) & IS_OBJ_FREE_CALLED)) {
+                       GC_FLAGS(object) |= IS_OBJ_FREE_CALLED;
+                       if (object->handlers->free_obj) {
+                               GC_ADDREF(object);
+                               object->handlers->free_obj(object);
+                               GC_DELREF(object);
                        }
-               } else {
-                       GC_DELREF(object);
                }
+               ptr = ((char*)object) - object->handlers->offset;
+               GC_REMOVE_FROM_BUFFER(object);
+               efree(ptr);
+               ZEND_OBJECTS_STORE_ADD_TO_FREE_LIST(handle);
        }
 }
 /* }}} */