}
if (OP1_TYPE == IS_VAR && !(*retval_ptr_ptr)->is_ref) {
- if (EX_T(opline->op1.u.var).var.ptr_ptr == &EX_T(opline->op1.u.var).var.ptr
- || (opline->extended_value == ZEND_RETURNS_FUNCTION && !EX_T(opline->op1.u.var).var.fcall_returned_reference)) {
+ if (opline->extended_value == ZEND_RETURNS_FUNCTION &&
+ EX_T(opline->op1.u.var).var.fcall_returned_reference) {
+ } else if (EX_T(opline->op1.u.var).var.ptr_ptr == &EX_T(opline->op1.u.var).var.ptr) {
if (OP1_TYPE == IS_VAR && !OP1_FREE) {
PZVAL_LOCK(*retval_ptr_ptr); /* undo the effect of get_zval_ptr_ptr() */
}
}
if ((opline->extended_value & ZEND_ARG_SEND_FUNCTION) &&
!EX_T(opline->op1.u.var).var.fcall_returned_reference) {
- zend_error(E_ERROR, "Only variables can be passed by reference");
+ zend_error_noreturn(E_ERROR, "Only variables can be passed by reference");
} else {
zval *varptr;
zend_free_op free_op1;
}
if (IS_CONST == IS_VAR && !(*retval_ptr_ptr)->is_ref) {
- if (EX_T(opline->op1.u.var).var.ptr_ptr == &EX_T(opline->op1.u.var).var.ptr
- || (opline->extended_value == ZEND_RETURNS_FUNCTION && !EX_T(opline->op1.u.var).var.fcall_returned_reference)) {
+ if (opline->extended_value == ZEND_RETURNS_FUNCTION &&
+ EX_T(opline->op1.u.var).var.fcall_returned_reference) {
+ } else if (EX_T(opline->op1.u.var).var.ptr_ptr == &EX_T(opline->op1.u.var).var.ptr) {
if (IS_CONST == IS_VAR && !0) {
PZVAL_LOCK(*retval_ptr_ptr); /* undo the effect of get_zval_ptr_ptr() */
}
}
if (IS_TMP_VAR == IS_VAR && !(*retval_ptr_ptr)->is_ref) {
- if (EX_T(opline->op1.u.var).var.ptr_ptr == &EX_T(opline->op1.u.var).var.ptr
- || (opline->extended_value == ZEND_RETURNS_FUNCTION && !EX_T(opline->op1.u.var).var.fcall_returned_reference)) {
+ if (opline->extended_value == ZEND_RETURNS_FUNCTION &&
+ EX_T(opline->op1.u.var).var.fcall_returned_reference) {
+ } else if (EX_T(opline->op1.u.var).var.ptr_ptr == &EX_T(opline->op1.u.var).var.ptr) {
if (IS_TMP_VAR == IS_VAR && !1) {
PZVAL_LOCK(*retval_ptr_ptr); /* undo the effect of get_zval_ptr_ptr() */
}
}
if (IS_VAR == IS_VAR && !(*retval_ptr_ptr)->is_ref) {
- if (EX_T(opline->op1.u.var).var.ptr_ptr == &EX_T(opline->op1.u.var).var.ptr
- || (opline->extended_value == ZEND_RETURNS_FUNCTION && !EX_T(opline->op1.u.var).var.fcall_returned_reference)) {
+ if (opline->extended_value == ZEND_RETURNS_FUNCTION &&
+ EX_T(opline->op1.u.var).var.fcall_returned_reference) {
+ } else if (EX_T(opline->op1.u.var).var.ptr_ptr == &EX_T(opline->op1.u.var).var.ptr) {
if (IS_VAR == IS_VAR && !(free_op1.var != NULL)) {
PZVAL_LOCK(*retval_ptr_ptr); /* undo the effect of get_zval_ptr_ptr() */
}
}
if ((opline->extended_value & ZEND_ARG_SEND_FUNCTION) &&
!EX_T(opline->op1.u.var).var.fcall_returned_reference) {
- zend_error(E_ERROR, "Only variables can be passed by reference");
+ zend_error_noreturn(E_ERROR, "Only variables can be passed by reference");
} else {
zval *varptr;
zend_free_op free_op1;
}
if (IS_CV == IS_VAR && !(*retval_ptr_ptr)->is_ref) {
- if (EX_T(opline->op1.u.var).var.ptr_ptr == &EX_T(opline->op1.u.var).var.ptr
- || (opline->extended_value == ZEND_RETURNS_FUNCTION && !EX_T(opline->op1.u.var).var.fcall_returned_reference)) {
+ if (opline->extended_value == ZEND_RETURNS_FUNCTION &&
+ EX_T(opline->op1.u.var).var.fcall_returned_reference) {
+ } else if (EX_T(opline->op1.u.var).var.ptr_ptr == &EX_T(opline->op1.u.var).var.ptr) {
if (IS_CV == IS_VAR && !0) {
PZVAL_LOCK(*retval_ptr_ptr); /* undo the effect of get_zval_ptr_ptr() */
}
}
if ((opline->extended_value & ZEND_ARG_SEND_FUNCTION) &&
!EX_T(opline->op1.u.var).var.fcall_returned_reference) {
- zend_error(E_ERROR, "Only variables can be passed by reference");
+ zend_error_noreturn(E_ERROR, "Only variables can be passed by reference");
} else {
zval *varptr;