Merge branch 'PHP-7.1'

* PHP-7.1:
  Fix the bug in ZEND_ASSIGN_DIM (as nikic suggest)
  Revert "Refix bug #73686"
This commit is contained in:
Xinchen Hui 2016-12-09 22:30:41 +08:00
commit 7695fba388
3 changed files with 17 additions and 21 deletions

View file

@ -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);
}

View file

@ -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);

View file

@ -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);