@@ -1746,28 +1746,42 @@ ZEND_VM_HANDLER(90, ZEND_FETCH_DIM_IS, CONST|TMPVAR|CV, CONST|TMPVAR|CV)
1746
1746
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION ();
1747
1747
}
1748
1748
1749
+ ZEND_VM_HELPER (zend_use_tmp_in_write_context_helper , ANY , ANY )
1750
+ {
1751
+ USE_OPLINE
1752
+
1753
+ SAVE_OPLINE ();
1754
+ zend_throw_error (NULL , "Cannot use temporary expression in write context" );
1755
+ FREE_UNFETCHED_OP2 ();
1756
+ FREE_UNFETCHED_OP1 ();
1757
+ ZVAL_UNDEF (EX_VAR (opline -> result .var ));
1758
+ HANDLE_EXCEPTION ();
1759
+ }
1760
+
1761
+ ZEND_VM_HELPER (zend_use_undef_in_read_context_helper , ANY , ANY )
1762
+ {
1763
+ USE_OPLINE
1764
+
1765
+ SAVE_OPLINE ();
1766
+ zend_throw_error (NULL , "Cannot use [] for reading" );
1767
+ FREE_UNFETCHED_OP2 ();
1768
+ FREE_UNFETCHED_OP1 ();
1769
+ ZVAL_UNDEF (EX_VAR (opline -> result .var ));
1770
+ HANDLE_EXCEPTION ();
1771
+ }
1772
+
1749
1773
ZEND_VM_HANDLER (93 , ZEND_FETCH_DIM_FUNC_ARG , CONST |TMP |VAR |CV , CONST |TMPVAR |UNUSED |NEXT |CV )
1750
1774
{
1751
1775
USE_OPLINE
1752
1776
1753
1777
if (UNEXPECTED (ZEND_CALL_INFO (EX (call )) & ZEND_CALL_SEND_ARG_BY_REF )) {
1754
1778
if ((OP1_TYPE & (IS_CONST |IS_TMP_VAR ))) {
1755
- SAVE_OPLINE ();
1756
- zend_throw_error (NULL , "Cannot use temporary expression in write context" );
1757
- FREE_UNFETCHED_OP2 ();
1758
- FREE_UNFETCHED_OP1 ();
1759
- ZVAL_UNDEF (EX_VAR (opline -> result .var ));
1760
- HANDLE_EXCEPTION ();
1779
+ ZEND_VM_DISPATCH_TO_HELPER (zend_use_tmp_in_write_context_helper );
1761
1780
}
1762
1781
ZEND_VM_DISPATCH_TO_HANDLER (ZEND_FETCH_DIM_W );
1763
1782
} else {
1764
1783
if (OP2_TYPE == IS_UNUSED ) {
1765
- SAVE_OPLINE ();
1766
- zend_throw_error (NULL , "Cannot use [] for reading" );
1767
- FREE_UNFETCHED_OP2 ();
1768
- FREE_UNFETCHED_OP1 ();
1769
- ZVAL_UNDEF (EX_VAR (opline -> result .var ));
1770
- HANDLE_EXCEPTION ();
1784
+ ZEND_VM_DISPATCH_TO_HELPER (zend_use_undef_in_read_context_helper );
1771
1785
}
1772
1786
ZEND_VM_DISPATCH_TO_HANDLER (ZEND_FETCH_DIM_R );
1773
1787
}
@@ -2040,12 +2054,7 @@ ZEND_VM_HANDLER(94, ZEND_FETCH_OBJ_FUNC_ARG, CONST|TMP|VAR|UNUSED|THIS|CV, CONST
2040
2054
if (UNEXPECTED (ZEND_CALL_INFO (EX (call )) & ZEND_CALL_SEND_ARG_BY_REF )) {
2041
2055
/* Behave like FETCH_OBJ_W */
2042
2056
if ((OP1_TYPE & (IS_CONST |IS_TMP_VAR ))) {
2043
- SAVE_OPLINE ();
2044
- zend_throw_error (NULL , "Cannot use temporary expression in write context" );
2045
- FREE_UNFETCHED_OP2 ();
2046
- FREE_UNFETCHED_OP1 ();
2047
- ZVAL_UNDEF (EX_VAR (opline -> result .var ));
2048
- HANDLE_EXCEPTION ();
2057
+ ZEND_VM_DISPATCH_TO_HELPER (zend_use_tmp_in_write_context_helper );
2049
2058
}
2050
2059
2051
2060
ZEND_VM_DISPATCH_TO_HANDLER (ZEND_FETCH_OBJ_W );
0 commit comments