@@ -1150,26 +1150,28 @@ ZEND_VM_HANDLER(27, ZEND_ASSIGN_DIM_OP, VAR|CV, CONST|TMPVAR|UNUSED|NEXT|CV, OP)
11501150 USE_OPLINE
11511151 zval * var_ptr ;
11521152 zval * value , * container , * dim ;
1153+ HashTable * ht ;
11531154
11541155 SAVE_OPLINE ();
11551156 container = GET_OP1_OBJ_ZVAL_PTR_PTR_UNDEF (BP_VAR_RW );
11561157
11571158 if (EXPECTED (Z_TYPE_P (container ) == IS_ARRAY )) {
11581159ZEND_VM_C_LABEL (assign_dim_op_array ):
11591160 SEPARATE_ARRAY (container );
1161+ ht = Z_ARRVAL_P (container );
11601162ZEND_VM_C_LABEL (assign_dim_op_new_array ):
11611163 dim = GET_OP2_ZVAL_PTR_UNDEF (BP_VAR_R );
11621164 if (OP2_TYPE == IS_UNUSED ) {
1163- var_ptr = zend_hash_next_index_insert (Z_ARRVAL_P ( container ) , & EG (uninitialized_zval ));
1165+ var_ptr = zend_hash_next_index_insert (ht , & EG (uninitialized_zval ));
11641166 if (UNEXPECTED (!var_ptr )) {
11651167 zend_cannot_add_element ();
11661168 ZEND_VM_C_GOTO (assign_dim_op_ret_null );
11671169 }
11681170 } else {
11691171 if (OP2_TYPE == IS_CONST ) {
1170- var_ptr = zend_fetch_dimension_address_inner_RW_CONST (Z_ARRVAL_P ( container ) , dim EXECUTE_DATA_CC );
1172+ var_ptr = zend_fetch_dimension_address_inner_RW_CONST (ht , dim EXECUTE_DATA_CC );
11711173 } else {
1172- var_ptr = zend_fetch_dimension_address_inner_RW (Z_ARRVAL_P ( container ) , dim EXECUTE_DATA_CC );
1174+ var_ptr = zend_fetch_dimension_address_inner_RW (ht , dim EXECUTE_DATA_CC );
11731175 }
11741176 if (UNEXPECTED (!var_ptr )) {
11751177 ZEND_VM_C_GOTO (assign_dim_op_ret_null );
@@ -1205,19 +1207,12 @@ ZEND_VM_C_LABEL(assign_dim_op_new_array):
12051207 if (EXPECTED (Z_TYPE_P (container ) == IS_OBJECT )) {
12061208 zend_object * obj = Z_OBJ_P (container );
12071209
1208- GC_ADDREF (obj );
12091210 dim = GET_OP2_ZVAL_PTR_UNDEF (BP_VAR_R );
1210- if (OP2_TYPE == IS_CV && UNEXPECTED (Z_ISUNDEF_P (dim ))) {
1211- dim = ZVAL_UNDEFINED_OP2 ();
1212- } else if (OP2_TYPE == IS_CONST && Z_EXTRA_P (dim ) == ZEND_EXTRA_VALUE ) {
1211+ if (OP2_TYPE == IS_CONST && Z_EXTRA_P (dim ) == ZEND_EXTRA_VALUE ) {
12131212 dim ++ ;
12141213 }
12151214 zend_binary_assign_op_obj_dim (obj , dim OPLINE_CC EXECUTE_DATA_CC );
1216- if (UNEXPECTED (GC_DELREF (obj ) == 0 )) {
1217- zend_objects_store_del (obj );
1218- }
12191215 } else if (EXPECTED (Z_TYPE_P (container ) <= IS_FALSE )) {
1220- HashTable * ht ;
12211216 zend_uchar old_type ;
12221217
12231218 if (OP1_TYPE == IS_CV && UNEXPECTED (Z_TYPE_INFO_P (container ) == IS_UNDEF )) {
0 commit comments