@@ -2405,6 +2405,9 @@ ZEND_VM_HANDLER(109, ZEND_FETCH_CLASS, ANY, CONST|TMP|VAR|UNUSED|CV)
2405
2405
} else if (Z_TYPE_P (class_name ) == IS_STRING ) {
2406
2406
EX_T (opline -> result .var ).class_entry = zend_fetch_class (Z_STRVAL_P (class_name ), Z_STRLEN_P (class_name ), opline -> extended_value TSRMLS_CC );
2407
2407
} else {
2408
+ if (UNEXPECTED (EG (exception ) != NULL )) {
2409
+ HANDLE_EXCEPTION ();
2410
+ }
2408
2411
zend_error_noreturn (E_ERROR , "Class name must be a valid object or a string" );
2409
2412
}
2410
2413
@@ -2429,6 +2432,9 @@ ZEND_VM_HANDLER(112, ZEND_INIT_METHOD_CALL, TMP|VAR|UNUSED|CV, CONST|TMP|VAR|CV)
2429
2432
2430
2433
if (OP2_TYPE != IS_CONST &&
2431
2434
UNEXPECTED (Z_TYPE_P (function_name ) != IS_STRING )) {
2435
+ if (UNEXPECTED (EG (exception ) != NULL )) {
2436
+ HANDLE_EXCEPTION ();
2437
+ }
2432
2438
zend_error_noreturn (E_ERROR , "Method name must be a string" );
2433
2439
}
2434
2440
@@ -2544,6 +2550,9 @@ ZEND_VM_HANDLER(113, ZEND_INIT_STATIC_METHOD_CALL, CONST|VAR, CONST|TMP|VAR|UNUS
2544
2550
function_name = GET_OP2_ZVAL_PTR (BP_VAR_R );
2545
2551
2546
2552
if (UNEXPECTED (Z_TYPE_P (function_name ) != IS_STRING )) {
2553
+ if (UNEXPECTED (EG (exception ) != NULL )) {
2554
+ HANDLE_EXCEPTION ();
2555
+ }
2547
2556
zend_error_noreturn (E_ERROR , "Function name must be a string" );
2548
2557
} else {
2549
2558
function_name_strval = Z_STRVAL_P (function_name );
@@ -2747,6 +2756,9 @@ ZEND_VM_HANDLER(59, ZEND_INIT_FCALL_BY_NAME, ANY, CONST|TMP|VAR|CV)
2747
2756
CHECK_EXCEPTION ();
2748
2757
ZEND_VM_NEXT_OPCODE ();
2749
2758
} else {
2759
+ if (UNEXPECTED (EG (exception ) != NULL )) {
2760
+ HANDLE_EXCEPTION ();
2761
+ }
2750
2762
zend_error_noreturn (E_ERROR , "Function name must be a string" );
2751
2763
ZEND_VM_NEXT_OPCODE (); /* Never reached */
2752
2764
}
@@ -2959,8 +2971,12 @@ ZEND_VM_HANDLER(108, ZEND_THROW, CONST|TMP|VAR|CV, ANY)
2959
2971
value = GET_OP1_ZVAL_PTR (BP_VAR_R );
2960
2972
2961
2973
if (OP1_TYPE == IS_CONST || UNEXPECTED (Z_TYPE_P (value ) != IS_OBJECT )) {
2974
+ if (UNEXPECTED (EG (exception ) != NULL )) {
2975
+ HANDLE_EXCEPTION ();
2976
+ }
2962
2977
zend_error_noreturn (E_ERROR , "Can only throw objects" );
2963
2978
}
2979
+
2964
2980
zend_exception_save (TSRMLS_C );
2965
2981
/* Not sure if a complete copy is what we want here */
2966
2982
ALLOC_ZVAL (exception );
@@ -3423,6 +3439,9 @@ ZEND_VM_HANDLER(110, ZEND_CLONE, CONST|TMP|VAR|UNUSED|CV, ANY)
3423
3439
3424
3440
if (OP1_TYPE == IS_CONST ||
3425
3441
UNEXPECTED (Z_TYPE_P (obj ) != IS_OBJECT )) {
3442
+ if (UNEXPECTED (EG (exception ) != NULL )) {
3443
+ HANDLE_EXCEPTION ();
3444
+ }
3426
3445
zend_error_noreturn (E_ERROR , "__clone method called on non-object" );
3427
3446
}
3428
3447
0 commit comments