@@ -862,15 +862,14 @@ ZEND_VM_HELPER(zend_binary_assign_op_dim_helper, VAR|CV, CONST|TMPVAR|UNUSED|CV,
862
862
ZEND_VM_C_LABEL (assign_dim_op_array ):
863
863
SEPARATE_ARRAY (container );
864
864
ZEND_VM_C_LABEL (assign_dim_op_new_array ):
865
+ dim = GET_OP2_ZVAL_PTR_UNDEF (BP_VAR_R );
865
866
if (OP2_TYPE == IS_UNUSED ) {
866
867
var_ptr = zend_hash_next_index_insert (Z_ARRVAL_P (container ), & EG (uninitialized_zval ));
867
868
if (UNEXPECTED (!var_ptr )) {
868
869
zend_error (E_WARNING , "Cannot add element to the array as the next element is already occupied" );
869
870
ZEND_VM_C_GOTO (assign_dim_op_ret_null );
870
871
}
871
872
} else {
872
- dim = GET_OP2_ZVAL_PTR_UNDEF (BP_VAR_R );
873
-
874
873
if (OP2_TYPE == IS_CONST ) {
875
874
var_ptr = zend_fetch_dimension_address_inner_RW_CONST (Z_ARRVAL_P (container ), dim EXECUTE_DATA_CC );
876
875
} else {
@@ -2008,18 +2007,18 @@ ZEND_VM_HANDLER(94, ZEND_FETCH_OBJ_FUNC_ARG, CONST|TMP|VAR|UNUSED|THIS|CV, CONST
2008
2007
zval * property ;
2009
2008
2010
2009
SAVE_OPLINE ();
2011
- container = GET_OP1_OBJ_ZVAL_PTR_PTR_UNDEF (BP_VAR_W );
2012
-
2013
- if (OP1_TYPE == IS_UNUSED && UNEXPECTED (Z_TYPE_P (container ) == IS_UNDEF )) {
2014
- ZEND_VM_DISPATCH_TO_HELPER (zend_this_not_in_object_context_helper );
2015
- }
2016
2010
if ((OP1_TYPE & (IS_CONST |IS_TMP_VAR ))) {
2017
2011
zend_throw_error (NULL , "Cannot use temporary expression in write context" );
2018
2012
FREE_UNFETCHED_OP2 ();
2019
- FREE_OP1_VAR_PTR ();
2013
+ FREE_UNFETCHED_OP1 ();
2020
2014
ZVAL_UNDEF (EX_VAR (opline -> result .var ));
2021
2015
HANDLE_EXCEPTION ();
2022
2016
}
2017
+
2018
+ container = GET_OP1_OBJ_ZVAL_PTR_PTR_UNDEF (BP_VAR_W );
2019
+ if (OP1_TYPE == IS_UNUSED && UNEXPECTED (Z_TYPE_P (container ) == IS_UNDEF )) {
2020
+ ZEND_VM_DISPATCH_TO_HELPER (zend_this_not_in_object_context_helper );
2021
+ }
2023
2022
property = GET_OP2_ZVAL_PTR (BP_VAR_R );
2024
2023
zend_fetch_property_address (EX_VAR (opline -> result .var ), container , OP1_TYPE , property , OP2_TYPE , ((OP2_TYPE == IS_CONST ) ? CACHE_ADDR (Z_CACHE_SLOT_P (property )) : NULL ), BP_VAR_W );
2025
2024
FREE_OP2 ();
@@ -5799,7 +5798,9 @@ ZEND_VM_HANDLER(125, ZEND_FE_RESET_RW, CONST|TMP|VAR|CV, JMP_ADDR)
5799
5798
}
5800
5799
Z_FE_ITER_P (EX_VAR (opline -> result .var )) = zend_hash_iterator_add (Z_ARRVAL_P (array_ptr ), 0 );
5801
5800
5802
- FREE_OP1_VAR_PTR ();
5801
+ if (OP1_TYPE == IS_VAR ) {
5802
+ FREE_OP1_VAR_PTR ();
5803
+ }
5803
5804
ZEND_VM_NEXT_OPCODE ();
5804
5805
} else if (OP1_TYPE != IS_CONST && EXPECTED (Z_TYPE_P (array_ptr ) == IS_OBJECT )) {
5805
5806
if (!Z_OBJCE_P (array_ptr )-> get_iterator ) {
@@ -5823,7 +5824,9 @@ ZEND_VM_HANDLER(125, ZEND_FE_RESET_RW, CONST|TMP|VAR|CV, JMP_ADDR)
5823
5824
}
5824
5825
Z_FE_ITER_P (EX_VAR (opline -> result .var )) = zend_hash_iterator_add (Z_OBJPROP_P (array_ptr ), 0 );
5825
5826
5826
- FREE_OP1_VAR_PTR ();
5827
+ if (OP1_TYPE == IS_VAR ) {
5828
+ FREE_OP1_VAR_PTR ();
5829
+ }
5827
5830
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION ();
5828
5831
} else {
5829
5832
zend_class_entry * ce = Z_OBJCE_P (array_ptr );
0 commit comments