@@ -9562,11 +9562,24 @@ ZEND_VM_HANDLER(205, ZEND_FRAMELESS_ICALL_1, CONST|TMP|VAR|CV, UNUSED)
9562
9562
USE_OPLINE
9563
9563
SAVE_OPLINE ();
9564
9564
zend_frameless_function_1 function = (zend_frameless_function_1 )zend_flf_handlers [opline -> extended_value ];
9565
- zval * arg1 = GET_OP1_ZVAL_PTR_DEREF (BP_VAR_R );
9566
- if (OP1_TYPE == IS_CV && EG (exception )) {
9567
- ZVAL_NULL (EX_VAR (opline -> result .var ));
9568
- HANDLE_EXCEPTION ();
9565
+
9566
+ zval * arg1 ;
9567
+ if (OP1_TYPE == IS_CV ) {
9568
+ /* Inlined GET_OPx_ZVAL_PTR_DEREF to nest the EG(exception) check. */
9569
+ arg1 = EX_VAR (opline -> op1 .var );
9570
+ if (UNEXPECTED (Z_TYPE_P (arg1 ) == IS_UNDEF )) {
9571
+ arg1 = zval_undefined_cv (opline -> op1 .var EXECUTE_DATA_CC );
9572
+ if (EG (exception )) {
9573
+ ZVAL_NULL (EX_VAR (opline -> result .var ));
9574
+ FREE_OP1 ();
9575
+ HANDLE_EXCEPTION ();
9576
+ }
9577
+ }
9578
+ ZVAL_DEREF (arg1 );
9579
+ } else {
9580
+ arg1 = GET_OP1_ZVAL_PTR_DEREF (BP_VAR_R );
9569
9581
}
9582
+
9570
9583
function (EX_VAR (opline -> result .var ), arg1 );
9571
9584
FREE_OP1 ();
9572
9585
if (EG (exception )) {
@@ -9581,12 +9594,43 @@ ZEND_VM_HANDLER(206, ZEND_FRAMELESS_ICALL_2, CONST|TMP|VAR|CV, CONST|TMP|VAR|CV)
9581
9594
USE_OPLINE
9582
9595
SAVE_OPLINE ();
9583
9596
zend_frameless_function_2 function = (zend_frameless_function_2 )zend_flf_handlers [opline -> extended_value ];
9584
- zval * arg1 = GET_OP1_ZVAL_PTR_DEREF (BP_VAR_R );
9585
- zval * arg2 = GET_OP2_ZVAL_PTR_DEREF (BP_VAR_R );
9586
- if ((OP1_TYPE == IS_CV || OP2_TYPE == IS_CV ) && EG (exception )) {
9587
- ZVAL_NULL (EX_VAR (opline -> result .var ));
9588
- HANDLE_EXCEPTION ();
9597
+
9598
+ zval * arg1 ;
9599
+ if (OP1_TYPE == IS_CV ) {
9600
+ /* Inlined GET_OPx_ZVAL_PTR_DEREF to nest the EG(exception) check. */
9601
+ arg1 = EX_VAR (opline -> op1 .var );
9602
+ if (UNEXPECTED (Z_TYPE_P (arg1 ) == IS_UNDEF )) {
9603
+ arg1 = zval_undefined_cv (opline -> op1 .var EXECUTE_DATA_CC );
9604
+ if (EG (exception )) {
9605
+ ZVAL_NULL (EX_VAR (opline -> result .var ));
9606
+ FREE_OP1 ();
9607
+ FREE_OP2 ();
9608
+ HANDLE_EXCEPTION ();
9609
+ }
9610
+ }
9611
+ ZVAL_DEREF (arg1 );
9612
+ } else {
9613
+ arg1 = GET_OP1_ZVAL_PTR_DEREF (BP_VAR_R );
9589
9614
}
9615
+
9616
+ zval * arg2 ;
9617
+ if (OP2_TYPE == IS_CV ) {
9618
+ /* Inlined GET_OPx_ZVAL_PTR_DEREF to nest the EG(exception) check. */
9619
+ arg2 = EX_VAR (opline -> op2 .var );
9620
+ if (UNEXPECTED (Z_TYPE_P (arg2 ) == IS_UNDEF )) {
9621
+ arg2 = zval_undefined_cv (opline -> op2 .var EXECUTE_DATA_CC );
9622
+ if (EG (exception )) {
9623
+ ZVAL_NULL (EX_VAR (opline -> result .var ));
9624
+ FREE_OP1 ();
9625
+ FREE_OP2 ();
9626
+ HANDLE_EXCEPTION ();
9627
+ }
9628
+ }
9629
+ ZVAL_DEREF (arg2 );
9630
+ } else {
9631
+ arg2 = GET_OP2_ZVAL_PTR_DEREF (BP_VAR_R );
9632
+ }
9633
+
9590
9634
function (EX_VAR (opline -> result .var ), arg1 , arg2 );
9591
9635
FREE_OP1 ();
9592
9636
FREE_OP2 ();
@@ -9607,6 +9651,9 @@ ZEND_VM_HANDLER(207, ZEND_FRAMELESS_ICALL_3, ANY, ANY)
9607
9651
zval * arg3 = GET_OP_DATA_ZVAL_PTR_DEREF (BP_VAR_R );
9608
9652
if (EG (exception )) {
9609
9653
ZVAL_NULL (EX_VAR (opline -> result .var ));
9654
+ FREE_OP1 ();
9655
+ FREE_OP2 ();
9656
+ FREE_OP_DATA ();
9610
9657
HANDLE_EXCEPTION ();
9611
9658
}
9612
9659
function (EX_VAR (opline -> result .var ), arg1 , arg2 , arg3 );
0 commit comments