]> granicus.if.org Git - php/commitdiff
Convert exception instanceof checks to assertions
authorNikita Popov <nikita.ppv@gmail.com>
Mon, 21 Sep 2020 09:05:19 +0000 (11:05 +0200)
committerNikita Popov <nikita.ppv@gmail.com>
Mon, 21 Sep 2020 15:04:39 +0000 (17:04 +0200)
Zend/zend_exceptions.c

index 1f47d88997c3e74747e0d21a86f774850704e1fb..f037f0399a11eb5ef43a7caafd00e04d231d9e35 100644 (file)
@@ -92,11 +92,10 @@ void zend_exception_set_previous(zend_object *exception, zend_object *add_previo
                return;
        }
 
+       ZEND_ASSERT(instanceof_function(add_previous->ce, zend_ce_throwable)
+               && "Previous execption must implement Throwable");
+
        ZVAL_OBJ(&pv, add_previous);
-       if (!instanceof_function(Z_OBJCE(pv), zend_ce_throwable)) {
-               zend_error_noreturn(E_CORE_ERROR, "Previous exception must implement Throwable");
-               return;
-       }
        ZVAL_OBJ(&zv, exception);
        ex = &zv;
        do {
@@ -837,16 +836,14 @@ static zend_object *zend_throw_exception_zstr(zend_class_entry *exception_ce, ze
 {
        zval ex, tmp;
 
-       if (exception_ce) {
-               if (!instanceof_function(exception_ce, zend_ce_throwable)) {
-                       zend_error(E_NOTICE, "Exceptions must implement Throwable");
-                       exception_ce = zend_ce_exception;
-               }
-       } else {
+       if (!exception_ce) {
                exception_ce = zend_ce_exception;
        }
-       object_init_ex(&ex, exception_ce);
 
+       ZEND_ASSERT(instanceof_function(exception_ce, zend_ce_throwable)
+               && "Exceptions must implement Throwable");
+
+       object_init_ex(&ex, exception_ce);
 
        if (message) {
                ZVAL_STR(&tmp, message);