{
zval *ret = EX_VAR(var);
- if (UNEXPECTED(Z_TYPE_P(ret) == IS_INDIRECT)) {
+ if (EXPECTED(Z_TYPE_P(ret) == IS_INDIRECT)) {
ret = Z_INDIRECT_P(ret);
} else if (!Z_REFCOUNTED_P(ret)) {
should_free->var = ret;
case IS_NULL:
if (container == &EG(error_zval)) {
- result = &EG(error_zval);
+ ZVAL_INDIRECT(result, &EG(error_zval));
} else if (type != BP_VAR_UNSET) {
convert_to_array:
if (Z_TYPE_P(container_ptr) != IS_REFERENCE) {
ZVAL_INDIRECT(result, overloaded_result);
}
} else {
- result = &EG(error_zval);
+ ZVAL_INDIRECT(result, &EG(error_zval));
}
//??? if (dim_type == IS_TMP_VAR) {
//??? zval_ptr_dtor(dim);
ZVAL_NULL(result);
} else {
zend_error(E_WARNING, "Cannot use a scalar value as an array");
- ZVAL_NULL(result);
+ ZVAL_INDIRECT(result, &EG(error_zval));
}
break;
}
} else if (OP2_TYPE == IS_VAR && opline->extended_value == ZEND_RETURNS_NEW) {
PZVAL_LOCK(value_ptr);
}
-//??? if (OP1_TYPE == IS_VAR && UNEXPECTED(EX_T(opline->op1.var).var.ptr_ptr == &EX_T(opline->op1.var).var.ptr)) {
-//??? zend_error_noreturn(E_ERROR, "Cannot assign by reference to overloaded object");
-//??? }
+ if (OP1_TYPE == IS_VAR && UNEXPECTED(Z_TYPE_P(EX_VAR(opline->op1.var)) != IS_INDIRECT)) {
+ zend_error_noreturn(E_ERROR, "Cannot assign by reference to overloaded object");
+ }
variable_ptr = GET_OP1_ZVAL_PTR_PTR(BP_VAR_W);
if ((OP2_TYPE == IS_VAR && UNEXPECTED(Z_TYPE_P(value_ptr) == IS_STR_OFFSET)) ||
} else if (IS_VAR == IS_VAR && opline->extended_value == ZEND_RETURNS_NEW) {
PZVAL_LOCK(value_ptr);
}
-//??? if (IS_VAR == IS_VAR && UNEXPECTED(EX_T(opline->op1.var).var.ptr_ptr == &EX_T(opline->op1.var).var.ptr)) {
-//??? zend_error_noreturn(E_ERROR, "Cannot assign by reference to overloaded object");
-//??? }
+ if (IS_VAR == IS_VAR && UNEXPECTED(Z_TYPE_P(EX_VAR(opline->op1.var)) != IS_INDIRECT)) {
+ zend_error_noreturn(E_ERROR, "Cannot assign by reference to overloaded object");
+ }
variable_ptr = _get_zval_ptr_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
if ((IS_VAR == IS_VAR && UNEXPECTED(Z_TYPE_P(value_ptr) == IS_STR_OFFSET)) ||
} else if (IS_CV == IS_VAR && opline->extended_value == ZEND_RETURNS_NEW) {
PZVAL_LOCK(value_ptr);
}
-//??? if (IS_VAR == IS_VAR && UNEXPECTED(EX_T(opline->op1.var).var.ptr_ptr == &EX_T(opline->op1.var).var.ptr)) {
-//??? zend_error_noreturn(E_ERROR, "Cannot assign by reference to overloaded object");
-//??? }
+ if (IS_VAR == IS_VAR && UNEXPECTED(Z_TYPE_P(EX_VAR(opline->op1.var)) != IS_INDIRECT)) {
+ zend_error_noreturn(E_ERROR, "Cannot assign by reference to overloaded object");
+ }
variable_ptr = _get_zval_ptr_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
if ((IS_CV == IS_VAR && UNEXPECTED(Z_TYPE_P(value_ptr) == IS_STR_OFFSET)) ||
} else if (IS_VAR == IS_VAR && opline->extended_value == ZEND_RETURNS_NEW) {
PZVAL_LOCK(value_ptr);
}
-//??? if (IS_CV == IS_VAR && UNEXPECTED(EX_T(opline->op1.var).var.ptr_ptr == &EX_T(opline->op1.var).var.ptr)) {
-//??? zend_error_noreturn(E_ERROR, "Cannot assign by reference to overloaded object");
-//??? }
+ if (IS_CV == IS_VAR && UNEXPECTED(Z_TYPE_P(EX_VAR(opline->op1.var)) != IS_INDIRECT)) {
+ zend_error_noreturn(E_ERROR, "Cannot assign by reference to overloaded object");
+ }
variable_ptr = _get_zval_ptr_cv_BP_VAR_W(execute_data, opline->op1.var TSRMLS_CC);
if ((IS_VAR == IS_VAR && UNEXPECTED(Z_TYPE_P(value_ptr) == IS_STR_OFFSET)) ||
} else if (IS_CV == IS_VAR && opline->extended_value == ZEND_RETURNS_NEW) {
PZVAL_LOCK(value_ptr);
}
-//??? if (IS_CV == IS_VAR && UNEXPECTED(EX_T(opline->op1.var).var.ptr_ptr == &EX_T(opline->op1.var).var.ptr)) {
-//??? zend_error_noreturn(E_ERROR, "Cannot assign by reference to overloaded object");
-//??? }
+ if (IS_CV == IS_VAR && UNEXPECTED(Z_TYPE_P(EX_VAR(opline->op1.var)) != IS_INDIRECT)) {
+ zend_error_noreturn(E_ERROR, "Cannot assign by reference to overloaded object");
+ }
variable_ptr = _get_zval_ptr_cv_BP_VAR_W(execute_data, opline->op1.var TSRMLS_CC);
if ((IS_CV == IS_VAR && UNEXPECTED(Z_TYPE_P(value_ptr) == IS_STR_OFFSET)) ||