diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c index 3c857d56278..4c107ff263a 100644 --- a/Zend/zend_execute.c +++ b/Zend/zend_execute.c @@ -1094,10 +1094,6 @@ static zend_never_inline void zend_assign_to_object_dim(zval *object, zval *dim, return; } - if (UNEXPECTED(Z_ISREF_P(value))) { - value = Z_REFVAL_P(value); - } - Z_OBJ_HT_P(object)->write_dimension(object, dim, value); } diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h index 6529e5abd9c..c1cb3022c7b 100644 --- a/Zend/zend_vm_def.h +++ b/Zend/zend_vm_def.h @@ -2293,7 +2293,7 @@ ZEND_VM_C_LABEL(try_assign_dim_array): } if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) { dim = GET_OP2_ZVAL_PTR(BP_VAR_R); - value = GET_OP_DATA_ZVAL_PTR(BP_VAR_R); + value = GET_OP_DATA_ZVAL_PTR_DEREF(BP_VAR_R); zend_assign_to_object_dim(object_ptr, dim, value); diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h index 849e9379621..6d1cd220287 100644 --- a/Zend/zend_vm_execute.h +++ b/Zend/zend_vm_execute.h @@ -19262,7 +19262,7 @@ try_assign_dim_array: } if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) { dim = EX_CONSTANT(opline->op2); - value = _get_zval_ptr_var((opline+1)->op1.var, execute_data, &free_op_data); + value = _get_zval_ptr_var_deref((opline+1)->op1.var, execute_data, &free_op_data); zend_assign_to_object_dim(object_ptr, dim, value); @@ -19355,7 +19355,7 @@ try_assign_dim_array: } if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) { dim = EX_CONSTANT(opline->op2); - value = _get_zval_ptr_cv_BP_VAR_R(execute_data, (opline+1)->op1.var); + value = _get_zval_ptr_cv_deref_BP_VAR_R(execute_data, (opline+1)->op1.var); zend_assign_to_object_dim(object_ptr, dim, value); @@ -21080,7 +21080,7 @@ try_assign_dim_array: } if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) { dim = NULL; - value = _get_zval_ptr_var((opline+1)->op1.var, execute_data, &free_op_data); + value = _get_zval_ptr_var_deref((opline+1)->op1.var, execute_data, &free_op_data); zend_assign_to_object_dim(object_ptr, dim, value); @@ -21173,7 +21173,7 @@ try_assign_dim_array: } if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) { dim = NULL; - value = _get_zval_ptr_cv_BP_VAR_R(execute_data, (opline+1)->op1.var); + value = _get_zval_ptr_cv_deref_BP_VAR_R(execute_data, (opline+1)->op1.var); zend_assign_to_object_dim(object_ptr, dim, value); @@ -23491,7 +23491,7 @@ try_assign_dim_array: } if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) { dim = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var); - value = _get_zval_ptr_var((opline+1)->op1.var, execute_data, &free_op_data); + value = _get_zval_ptr_var_deref((opline+1)->op1.var, execute_data, &free_op_data); zend_assign_to_object_dim(object_ptr, dim, value); @@ -23584,7 +23584,7 @@ try_assign_dim_array: } if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) { dim = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var); - value = _get_zval_ptr_cv_BP_VAR_R(execute_data, (opline+1)->op1.var); + value = _get_zval_ptr_cv_deref_BP_VAR_R(execute_data, (opline+1)->op1.var); zend_assign_to_object_dim(object_ptr, dim, value); @@ -26020,7 +26020,7 @@ try_assign_dim_array: } if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) { dim = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2); - value = _get_zval_ptr_var((opline+1)->op1.var, execute_data, &free_op_data); + value = _get_zval_ptr_var_deref((opline+1)->op1.var, execute_data, &free_op_data); zend_assign_to_object_dim(object_ptr, dim, value); @@ -26113,7 +26113,7 @@ try_assign_dim_array: } if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) { dim = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2); - value = _get_zval_ptr_cv_BP_VAR_R(execute_data, (opline+1)->op1.var); + value = _get_zval_ptr_cv_deref_BP_VAR_R(execute_data, (opline+1)->op1.var); zend_assign_to_object_dim(object_ptr, dim, value); @@ -37213,7 +37213,7 @@ try_assign_dim_array: } if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) { dim = EX_CONSTANT(opline->op2); - value = _get_zval_ptr_var((opline+1)->op1.var, execute_data, &free_op_data); + value = _get_zval_ptr_var_deref((opline+1)->op1.var, execute_data, &free_op_data); zend_assign_to_object_dim(object_ptr, dim, value); @@ -37306,7 +37306,7 @@ try_assign_dim_array: } if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) { dim = EX_CONSTANT(opline->op2); - value = _get_zval_ptr_cv_BP_VAR_R(execute_data, (opline+1)->op1.var); + value = _get_zval_ptr_cv_deref_BP_VAR_R(execute_data, (opline+1)->op1.var); zend_assign_to_object_dim(object_ptr, dim, value); @@ -40241,7 +40241,7 @@ try_assign_dim_array: } if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) { dim = NULL; - value = _get_zval_ptr_var((opline+1)->op1.var, execute_data, &free_op_data); + value = _get_zval_ptr_var_deref((opline+1)->op1.var, execute_data, &free_op_data); zend_assign_to_object_dim(object_ptr, dim, value); @@ -40334,7 +40334,7 @@ try_assign_dim_array: } if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) { dim = NULL; - value = _get_zval_ptr_cv_BP_VAR_R(execute_data, (opline+1)->op1.var); + value = _get_zval_ptr_cv_deref_BP_VAR_R(execute_data, (opline+1)->op1.var); zend_assign_to_object_dim(object_ptr, dim, value); @@ -43591,7 +43591,7 @@ try_assign_dim_array: } if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) { dim = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var); - value = _get_zval_ptr_var((opline+1)->op1.var, execute_data, &free_op_data); + value = _get_zval_ptr_var_deref((opline+1)->op1.var, execute_data, &free_op_data); zend_assign_to_object_dim(object_ptr, dim, value); @@ -43684,7 +43684,7 @@ try_assign_dim_array: } if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) { dim = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var); - value = _get_zval_ptr_cv_BP_VAR_R(execute_data, (opline+1)->op1.var); + value = _get_zval_ptr_cv_deref_BP_VAR_R(execute_data, (opline+1)->op1.var); zend_assign_to_object_dim(object_ptr, dim, value); @@ -47250,7 +47250,7 @@ try_assign_dim_array: } if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) { dim = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2); - value = _get_zval_ptr_var((opline+1)->op1.var, execute_data, &free_op_data); + value = _get_zval_ptr_var_deref((opline+1)->op1.var, execute_data, &free_op_data); zend_assign_to_object_dim(object_ptr, dim, value); @@ -47343,7 +47343,7 @@ try_assign_dim_array: } if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) { dim = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2); - value = _get_zval_ptr_cv_BP_VAR_R(execute_data, (opline+1)->op1.var); + value = _get_zval_ptr_cv_deref_BP_VAR_R(execute_data, (opline+1)->op1.var); zend_assign_to_object_dim(object_ptr, dim, value);