retval_ptr = NULL;
if (IS_CONST == IS_VAR) {
- if (retval_ptr == &EG(uninitialized_zval) ||
- (opline->extended_value == ZEND_RETURNS_FUNCTION && !Z_ISREF_P(retval_ptr))) {
+ ZEND_ASSERT(retval_ptr != &EG(uninitialized_zval));
+ if (opline->extended_value == ZEND_RETURNS_FUNCTION && !Z_ISREF_P(retval_ptr)) {
zend_error(E_NOTICE, "Only variable references should be returned by reference");
if (EX(return_value)) {
ZVAL_NEW_REF(EX(return_value), retval_ptr);
/* If a function call result is yielded and the function did
* not return by reference we throw a notice. */
- if (IS_CONST == IS_VAR &&
- (value_ptr == &EG(uninitialized_zval) ||
- (opline->extended_value == ZEND_RETURNS_FUNCTION &&
- !Z_ISREF_P(value_ptr)))) {
- zend_error(E_NOTICE, "Only variable references should be yielded by reference");
- ZVAL_COPY(&generator->value, value_ptr);
- } else {
+ do {
+ if (IS_CONST == IS_VAR) {
+ ZEND_ASSERT(value_ptr != &EG(uninitialized_zval));
+ if (opline->extended_value == ZEND_RETURNS_FUNCTION
+ && !Z_ISREF_P(value_ptr)) {
+ zend_error(E_NOTICE, "Only variable references should be yielded by reference");
+ ZVAL_COPY(&generator->value, value_ptr);
+ break;
+ }
+ }
if (Z_ISREF_P(value_ptr)) {
Z_ADDREF_P(value_ptr);
} else {
ZVAL_MAKE_REF_EX(value_ptr, 2);
}
ZVAL_REF(&generator->value, Z_REF_P(value_ptr));
- }
+ } while (0);
}
} else {
/* If a function call result is yielded and the function did
* not return by reference we throw a notice. */
- if (IS_CONST == IS_VAR &&
- (value_ptr == &EG(uninitialized_zval) ||
- (opline->extended_value == ZEND_RETURNS_FUNCTION &&
- !Z_ISREF_P(value_ptr)))) {
- zend_error(E_NOTICE, "Only variable references should be yielded by reference");
- ZVAL_COPY(&generator->value, value_ptr);
- } else {
+ do {
+ if (IS_CONST == IS_VAR) {
+ ZEND_ASSERT(value_ptr != &EG(uninitialized_zval));
+ if (opline->extended_value == ZEND_RETURNS_FUNCTION
+ && !Z_ISREF_P(value_ptr)) {
+ zend_error(E_NOTICE, "Only variable references should be yielded by reference");
+ ZVAL_COPY(&generator->value, value_ptr);
+ break;
+ }
+ }
if (Z_ISREF_P(value_ptr)) {
Z_ADDREF_P(value_ptr);
} else {
ZVAL_MAKE_REF_EX(value_ptr, 2);
}
ZVAL_REF(&generator->value, Z_REF_P(value_ptr));
- }
+ } while (0);
}
} else {
/* If a function call result is yielded and the function did
* not return by reference we throw a notice. */
- if (IS_CONST == IS_VAR &&
- (value_ptr == &EG(uninitialized_zval) ||
- (opline->extended_value == ZEND_RETURNS_FUNCTION &&
- !Z_ISREF_P(value_ptr)))) {
- zend_error(E_NOTICE, "Only variable references should be yielded by reference");
- ZVAL_COPY(&generator->value, value_ptr);
- } else {
+ do {
+ if (IS_CONST == IS_VAR) {
+ ZEND_ASSERT(value_ptr != &EG(uninitialized_zval));
+ if (opline->extended_value == ZEND_RETURNS_FUNCTION
+ && !Z_ISREF_P(value_ptr)) {
+ zend_error(E_NOTICE, "Only variable references should be yielded by reference");
+ ZVAL_COPY(&generator->value, value_ptr);
+ break;
+ }
+ }
if (Z_ISREF_P(value_ptr)) {
Z_ADDREF_P(value_ptr);
} else {
ZVAL_MAKE_REF_EX(value_ptr, 2);
}
ZVAL_REF(&generator->value, Z_REF_P(value_ptr));
- }
+ } while (0);
}
} else {
/* If a function call result is yielded and the function did
* not return by reference we throw a notice. */
- if (IS_CONST == IS_VAR &&
- (value_ptr == &EG(uninitialized_zval) ||
- (opline->extended_value == ZEND_RETURNS_FUNCTION &&
- !Z_ISREF_P(value_ptr)))) {
- zend_error(E_NOTICE, "Only variable references should be yielded by reference");
- ZVAL_COPY(&generator->value, value_ptr);
- } else {
+ do {
+ if (IS_CONST == IS_VAR) {
+ ZEND_ASSERT(value_ptr != &EG(uninitialized_zval));
+ if (opline->extended_value == ZEND_RETURNS_FUNCTION
+ && !Z_ISREF_P(value_ptr)) {
+ zend_error(E_NOTICE, "Only variable references should be yielded by reference");
+ ZVAL_COPY(&generator->value, value_ptr);
+ break;
+ }
+ }
if (Z_ISREF_P(value_ptr)) {
Z_ADDREF_P(value_ptr);
} else {
ZVAL_MAKE_REF_EX(value_ptr, 2);
}
ZVAL_REF(&generator->value, Z_REF_P(value_ptr));
- }
+ } while (0);
}
} else {
/* If a function call result is yielded and the function did
* not return by reference we throw a notice. */
- if (IS_CONST == IS_VAR &&
- (value_ptr == &EG(uninitialized_zval) ||
- (opline->extended_value == ZEND_RETURNS_FUNCTION &&
- !Z_ISREF_P(value_ptr)))) {
- zend_error(E_NOTICE, "Only variable references should be yielded by reference");
- ZVAL_COPY(&generator->value, value_ptr);
- } else {
+ do {
+ if (IS_CONST == IS_VAR) {
+ ZEND_ASSERT(value_ptr != &EG(uninitialized_zval));
+ if (opline->extended_value == ZEND_RETURNS_FUNCTION
+ && !Z_ISREF_P(value_ptr)) {
+ zend_error(E_NOTICE, "Only variable references should be yielded by reference");
+ ZVAL_COPY(&generator->value, value_ptr);
+ break;
+ }
+ }
if (Z_ISREF_P(value_ptr)) {
Z_ADDREF_P(value_ptr);
} else {
ZVAL_MAKE_REF_EX(value_ptr, 2);
}
ZVAL_REF(&generator->value, Z_REF_P(value_ptr));
- }
+ } while (0);
}
} else {
retval_ptr = NULL;
if (IS_TMP_VAR == IS_VAR) {
- if (retval_ptr == &EG(uninitialized_zval) ||
- (opline->extended_value == ZEND_RETURNS_FUNCTION && !Z_ISREF_P(retval_ptr))) {
+ ZEND_ASSERT(retval_ptr != &EG(uninitialized_zval));
+ if (opline->extended_value == ZEND_RETURNS_FUNCTION && !Z_ISREF_P(retval_ptr)) {
zend_error(E_NOTICE, "Only variable references should be returned by reference");
if (EX(return_value)) {
ZVAL_NEW_REF(EX(return_value), retval_ptr);
/* If a function call result is yielded and the function did
* not return by reference we throw a notice. */
- if (IS_TMP_VAR == IS_VAR &&
- (value_ptr == &EG(uninitialized_zval) ||
- (opline->extended_value == ZEND_RETURNS_FUNCTION &&
- !Z_ISREF_P(value_ptr)))) {
- zend_error(E_NOTICE, "Only variable references should be yielded by reference");
- ZVAL_COPY(&generator->value, value_ptr);
- } else {
+ do {
+ if (IS_TMP_VAR == IS_VAR) {
+ ZEND_ASSERT(value_ptr != &EG(uninitialized_zval));
+ if (opline->extended_value == ZEND_RETURNS_FUNCTION
+ && !Z_ISREF_P(value_ptr)) {
+ zend_error(E_NOTICE, "Only variable references should be yielded by reference");
+ ZVAL_COPY(&generator->value, value_ptr);
+ break;
+ }
+ }
if (Z_ISREF_P(value_ptr)) {
Z_ADDREF_P(value_ptr);
} else {
ZVAL_MAKE_REF_EX(value_ptr, 2);
}
ZVAL_REF(&generator->value, Z_REF_P(value_ptr));
- }
+ } while (0);
}
} else {
/* If a function call result is yielded and the function did
* not return by reference we throw a notice. */
- if (IS_TMP_VAR == IS_VAR &&
- (value_ptr == &EG(uninitialized_zval) ||
- (opline->extended_value == ZEND_RETURNS_FUNCTION &&
- !Z_ISREF_P(value_ptr)))) {
- zend_error(E_NOTICE, "Only variable references should be yielded by reference");
- ZVAL_COPY(&generator->value, value_ptr);
- } else {
+ do {
+ if (IS_TMP_VAR == IS_VAR) {
+ ZEND_ASSERT(value_ptr != &EG(uninitialized_zval));
+ if (opline->extended_value == ZEND_RETURNS_FUNCTION
+ && !Z_ISREF_P(value_ptr)) {
+ zend_error(E_NOTICE, "Only variable references should be yielded by reference");
+ ZVAL_COPY(&generator->value, value_ptr);
+ break;
+ }
+ }
if (Z_ISREF_P(value_ptr)) {
Z_ADDREF_P(value_ptr);
} else {
ZVAL_MAKE_REF_EX(value_ptr, 2);
}
ZVAL_REF(&generator->value, Z_REF_P(value_ptr));
- }
+ } while (0);
}
} else {
/* If a function call result is yielded and the function did
* not return by reference we throw a notice. */
- if (IS_TMP_VAR == IS_VAR &&
- (value_ptr == &EG(uninitialized_zval) ||
- (opline->extended_value == ZEND_RETURNS_FUNCTION &&
- !Z_ISREF_P(value_ptr)))) {
- zend_error(E_NOTICE, "Only variable references should be yielded by reference");
- ZVAL_COPY(&generator->value, value_ptr);
- } else {
+ do {
+ if (IS_TMP_VAR == IS_VAR) {
+ ZEND_ASSERT(value_ptr != &EG(uninitialized_zval));
+ if (opline->extended_value == ZEND_RETURNS_FUNCTION
+ && !Z_ISREF_P(value_ptr)) {
+ zend_error(E_NOTICE, "Only variable references should be yielded by reference");
+ ZVAL_COPY(&generator->value, value_ptr);
+ break;
+ }
+ }
if (Z_ISREF_P(value_ptr)) {
Z_ADDREF_P(value_ptr);
} else {
ZVAL_MAKE_REF_EX(value_ptr, 2);
}
ZVAL_REF(&generator->value, Z_REF_P(value_ptr));
- }
+ } while (0);
}
} else {
/* If a function call result is yielded and the function did
* not return by reference we throw a notice. */
- if (IS_TMP_VAR == IS_VAR &&
- (value_ptr == &EG(uninitialized_zval) ||
- (opline->extended_value == ZEND_RETURNS_FUNCTION &&
- !Z_ISREF_P(value_ptr)))) {
- zend_error(E_NOTICE, "Only variable references should be yielded by reference");
- ZVAL_COPY(&generator->value, value_ptr);
- } else {
+ do {
+ if (IS_TMP_VAR == IS_VAR) {
+ ZEND_ASSERT(value_ptr != &EG(uninitialized_zval));
+ if (opline->extended_value == ZEND_RETURNS_FUNCTION
+ && !Z_ISREF_P(value_ptr)) {
+ zend_error(E_NOTICE, "Only variable references should be yielded by reference");
+ ZVAL_COPY(&generator->value, value_ptr);
+ break;
+ }
+ }
if (Z_ISREF_P(value_ptr)) {
Z_ADDREF_P(value_ptr);
} else {
ZVAL_MAKE_REF_EX(value_ptr, 2);
}
ZVAL_REF(&generator->value, Z_REF_P(value_ptr));
- }
+ } while (0);
}
} else {
/* If a function call result is yielded and the function did
* not return by reference we throw a notice. */
- if (IS_TMP_VAR == IS_VAR &&
- (value_ptr == &EG(uninitialized_zval) ||
- (opline->extended_value == ZEND_RETURNS_FUNCTION &&
- !Z_ISREF_P(value_ptr)))) {
- zend_error(E_NOTICE, "Only variable references should be yielded by reference");
- ZVAL_COPY(&generator->value, value_ptr);
- } else {
+ do {
+ if (IS_TMP_VAR == IS_VAR) {
+ ZEND_ASSERT(value_ptr != &EG(uninitialized_zval));
+ if (opline->extended_value == ZEND_RETURNS_FUNCTION
+ && !Z_ISREF_P(value_ptr)) {
+ zend_error(E_NOTICE, "Only variable references should be yielded by reference");
+ ZVAL_COPY(&generator->value, value_ptr);
+ break;
+ }
+ }
if (Z_ISREF_P(value_ptr)) {
Z_ADDREF_P(value_ptr);
} else {
ZVAL_MAKE_REF_EX(value_ptr, 2);
}
ZVAL_REF(&generator->value, Z_REF_P(value_ptr));
- }
+ } while (0);
}
} else {
retval_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
if (IS_VAR == IS_VAR) {
- if (retval_ptr == &EG(uninitialized_zval) ||
- (opline->extended_value == ZEND_RETURNS_FUNCTION && !Z_ISREF_P(retval_ptr))) {
+ ZEND_ASSERT(retval_ptr != &EG(uninitialized_zval));
+ if (opline->extended_value == ZEND_RETURNS_FUNCTION && !Z_ISREF_P(retval_ptr)) {
zend_error(E_NOTICE, "Only variable references should be returned by reference");
if (EX(return_value)) {
ZVAL_NEW_REF(EX(return_value), retval_ptr);
/* If a function call result is yielded and the function did
* not return by reference we throw a notice. */
- if (IS_VAR == IS_VAR &&
- (value_ptr == &EG(uninitialized_zval) ||
- (opline->extended_value == ZEND_RETURNS_FUNCTION &&
- !Z_ISREF_P(value_ptr)))) {
- zend_error(E_NOTICE, "Only variable references should be yielded by reference");
- ZVAL_COPY(&generator->value, value_ptr);
- } else {
+ do {
+ if (IS_VAR == IS_VAR) {
+ ZEND_ASSERT(value_ptr != &EG(uninitialized_zval));
+ if (opline->extended_value == ZEND_RETURNS_FUNCTION
+ && !Z_ISREF_P(value_ptr)) {
+ zend_error(E_NOTICE, "Only variable references should be yielded by reference");
+ ZVAL_COPY(&generator->value, value_ptr);
+ break;
+ }
+ }
if (Z_ISREF_P(value_ptr)) {
Z_ADDREF_P(value_ptr);
} else {
ZVAL_MAKE_REF_EX(value_ptr, 2);
}
ZVAL_REF(&generator->value, Z_REF_P(value_ptr));
- }
+ } while (0);
if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
}
/* If a function call result is yielded and the function did
* not return by reference we throw a notice. */
- if (IS_VAR == IS_VAR &&
- (value_ptr == &EG(uninitialized_zval) ||
- (opline->extended_value == ZEND_RETURNS_FUNCTION &&
- !Z_ISREF_P(value_ptr)))) {
- zend_error(E_NOTICE, "Only variable references should be yielded by reference");
- ZVAL_COPY(&generator->value, value_ptr);
- } else {
+ do {
+ if (IS_VAR == IS_VAR) {
+ ZEND_ASSERT(value_ptr != &EG(uninitialized_zval));
+ if (opline->extended_value == ZEND_RETURNS_FUNCTION
+ && !Z_ISREF_P(value_ptr)) {
+ zend_error(E_NOTICE, "Only variable references should be yielded by reference");
+ ZVAL_COPY(&generator->value, value_ptr);
+ break;
+ }
+ }
if (Z_ISREF_P(value_ptr)) {
Z_ADDREF_P(value_ptr);
} else {
ZVAL_MAKE_REF_EX(value_ptr, 2);
}
ZVAL_REF(&generator->value, Z_REF_P(value_ptr));
- }
+ } while (0);
if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
}
/* If a function call result is yielded and the function did
* not return by reference we throw a notice. */
- if (IS_VAR == IS_VAR &&
- (value_ptr == &EG(uninitialized_zval) ||
- (opline->extended_value == ZEND_RETURNS_FUNCTION &&
- !Z_ISREF_P(value_ptr)))) {
- zend_error(E_NOTICE, "Only variable references should be yielded by reference");
- ZVAL_COPY(&generator->value, value_ptr);
- } else {
+ do {
+ if (IS_VAR == IS_VAR) {
+ ZEND_ASSERT(value_ptr != &EG(uninitialized_zval));
+ if (opline->extended_value == ZEND_RETURNS_FUNCTION
+ && !Z_ISREF_P(value_ptr)) {
+ zend_error(E_NOTICE, "Only variable references should be yielded by reference");
+ ZVAL_COPY(&generator->value, value_ptr);
+ break;
+ }
+ }
if (Z_ISREF_P(value_ptr)) {
Z_ADDREF_P(value_ptr);
} else {
ZVAL_MAKE_REF_EX(value_ptr, 2);
}
ZVAL_REF(&generator->value, Z_REF_P(value_ptr));
- }
+ } while (0);
if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
}
/* If a function call result is yielded and the function did
* not return by reference we throw a notice. */
- if (IS_VAR == IS_VAR &&
- (value_ptr == &EG(uninitialized_zval) ||
- (opline->extended_value == ZEND_RETURNS_FUNCTION &&
- !Z_ISREF_P(value_ptr)))) {
- zend_error(E_NOTICE, "Only variable references should be yielded by reference");
- ZVAL_COPY(&generator->value, value_ptr);
- } else {
+ do {
+ if (IS_VAR == IS_VAR) {
+ ZEND_ASSERT(value_ptr != &EG(uninitialized_zval));
+ if (opline->extended_value == ZEND_RETURNS_FUNCTION
+ && !Z_ISREF_P(value_ptr)) {
+ zend_error(E_NOTICE, "Only variable references should be yielded by reference");
+ ZVAL_COPY(&generator->value, value_ptr);
+ break;
+ }
+ }
if (Z_ISREF_P(value_ptr)) {
Z_ADDREF_P(value_ptr);
} else {
ZVAL_MAKE_REF_EX(value_ptr, 2);
}
ZVAL_REF(&generator->value, Z_REF_P(value_ptr));
- }
+ } while (0);
if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
}
/* If a function call result is yielded and the function did
* not return by reference we throw a notice. */
- if (IS_VAR == IS_VAR &&
- (value_ptr == &EG(uninitialized_zval) ||
- (opline->extended_value == ZEND_RETURNS_FUNCTION &&
- !Z_ISREF_P(value_ptr)))) {
- zend_error(E_NOTICE, "Only variable references should be yielded by reference");
- ZVAL_COPY(&generator->value, value_ptr);
- } else {
+ do {
+ if (IS_VAR == IS_VAR) {
+ ZEND_ASSERT(value_ptr != &EG(uninitialized_zval));
+ if (opline->extended_value == ZEND_RETURNS_FUNCTION
+ && !Z_ISREF_P(value_ptr)) {
+ zend_error(E_NOTICE, "Only variable references should be yielded by reference");
+ ZVAL_COPY(&generator->value, value_ptr);
+ break;
+ }
+ }
if (Z_ISREF_P(value_ptr)) {
Z_ADDREF_P(value_ptr);
} else {
ZVAL_MAKE_REF_EX(value_ptr, 2);
}
ZVAL_REF(&generator->value, Z_REF_P(value_ptr));
- }
+ } while (0);
if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
}
/* If a function call result is yielded and the function did
* not return by reference we throw a notice. */
- if (IS_UNUSED == IS_VAR &&
- (value_ptr == &EG(uninitialized_zval) ||
- (opline->extended_value == ZEND_RETURNS_FUNCTION &&
- !Z_ISREF_P(value_ptr)))) {
- zend_error(E_NOTICE, "Only variable references should be yielded by reference");
- ZVAL_COPY(&generator->value, value_ptr);
- } else {
+ do {
+ if (IS_UNUSED == IS_VAR) {
+ ZEND_ASSERT(value_ptr != &EG(uninitialized_zval));
+ if (opline->extended_value == ZEND_RETURNS_FUNCTION
+ && !Z_ISREF_P(value_ptr)) {
+ zend_error(E_NOTICE, "Only variable references should be yielded by reference");
+ ZVAL_COPY(&generator->value, value_ptr);
+ break;
+ }
+ }
if (Z_ISREF_P(value_ptr)) {
Z_ADDREF_P(value_ptr);
} else {
ZVAL_MAKE_REF_EX(value_ptr, 2);
}
ZVAL_REF(&generator->value, Z_REF_P(value_ptr));
- }
+ } while (0);
}
} else {
/* If a function call result is yielded and the function did
* not return by reference we throw a notice. */
- if (IS_UNUSED == IS_VAR &&
- (value_ptr == &EG(uninitialized_zval) ||
- (opline->extended_value == ZEND_RETURNS_FUNCTION &&
- !Z_ISREF_P(value_ptr)))) {
- zend_error(E_NOTICE, "Only variable references should be yielded by reference");
- ZVAL_COPY(&generator->value, value_ptr);
- } else {
+ do {
+ if (IS_UNUSED == IS_VAR) {
+ ZEND_ASSERT(value_ptr != &EG(uninitialized_zval));
+ if (opline->extended_value == ZEND_RETURNS_FUNCTION
+ && !Z_ISREF_P(value_ptr)) {
+ zend_error(E_NOTICE, "Only variable references should be yielded by reference");
+ ZVAL_COPY(&generator->value, value_ptr);
+ break;
+ }
+ }
if (Z_ISREF_P(value_ptr)) {
Z_ADDREF_P(value_ptr);
} else {
ZVAL_MAKE_REF_EX(value_ptr, 2);
}
ZVAL_REF(&generator->value, Z_REF_P(value_ptr));
- }
+ } while (0);
}
} else {
/* If a function call result is yielded and the function did
* not return by reference we throw a notice. */
- if (IS_UNUSED == IS_VAR &&
- (value_ptr == &EG(uninitialized_zval) ||
- (opline->extended_value == ZEND_RETURNS_FUNCTION &&
- !Z_ISREF_P(value_ptr)))) {
- zend_error(E_NOTICE, "Only variable references should be yielded by reference");
- ZVAL_COPY(&generator->value, value_ptr);
- } else {
+ do {
+ if (IS_UNUSED == IS_VAR) {
+ ZEND_ASSERT(value_ptr != &EG(uninitialized_zval));
+ if (opline->extended_value == ZEND_RETURNS_FUNCTION
+ && !Z_ISREF_P(value_ptr)) {
+ zend_error(E_NOTICE, "Only variable references should be yielded by reference");
+ ZVAL_COPY(&generator->value, value_ptr);
+ break;
+ }
+ }
if (Z_ISREF_P(value_ptr)) {
Z_ADDREF_P(value_ptr);
} else {
ZVAL_MAKE_REF_EX(value_ptr, 2);
}
ZVAL_REF(&generator->value, Z_REF_P(value_ptr));
- }
+ } while (0);
}
} else {
/* If a function call result is yielded and the function did
* not return by reference we throw a notice. */
- if (IS_UNUSED == IS_VAR &&
- (value_ptr == &EG(uninitialized_zval) ||
- (opline->extended_value == ZEND_RETURNS_FUNCTION &&
- !Z_ISREF_P(value_ptr)))) {
- zend_error(E_NOTICE, "Only variable references should be yielded by reference");
- ZVAL_COPY(&generator->value, value_ptr);
- } else {
+ do {
+ if (IS_UNUSED == IS_VAR) {
+ ZEND_ASSERT(value_ptr != &EG(uninitialized_zval));
+ if (opline->extended_value == ZEND_RETURNS_FUNCTION
+ && !Z_ISREF_P(value_ptr)) {
+ zend_error(E_NOTICE, "Only variable references should be yielded by reference");
+ ZVAL_COPY(&generator->value, value_ptr);
+ break;
+ }
+ }
if (Z_ISREF_P(value_ptr)) {
Z_ADDREF_P(value_ptr);
} else {
ZVAL_MAKE_REF_EX(value_ptr, 2);
}
ZVAL_REF(&generator->value, Z_REF_P(value_ptr));
- }
+ } while (0);
}
} else {
/* If a function call result is yielded and the function did
* not return by reference we throw a notice. */
- if (IS_UNUSED == IS_VAR &&
- (value_ptr == &EG(uninitialized_zval) ||
- (opline->extended_value == ZEND_RETURNS_FUNCTION &&
- !Z_ISREF_P(value_ptr)))) {
- zend_error(E_NOTICE, "Only variable references should be yielded by reference");
- ZVAL_COPY(&generator->value, value_ptr);
- } else {
+ do {
+ if (IS_UNUSED == IS_VAR) {
+ ZEND_ASSERT(value_ptr != &EG(uninitialized_zval));
+ if (opline->extended_value == ZEND_RETURNS_FUNCTION
+ && !Z_ISREF_P(value_ptr)) {
+ zend_error(E_NOTICE, "Only variable references should be yielded by reference");
+ ZVAL_COPY(&generator->value, value_ptr);
+ break;
+ }
+ }
if (Z_ISREF_P(value_ptr)) {
Z_ADDREF_P(value_ptr);
} else {
ZVAL_MAKE_REF_EX(value_ptr, 2);
}
ZVAL_REF(&generator->value, Z_REF_P(value_ptr));
- }
+ } while (0);
}
} else {
retval_ptr = _get_zval_ptr_cv_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
if (IS_CV == IS_VAR) {
- if (retval_ptr == &EG(uninitialized_zval) ||
- (opline->extended_value == ZEND_RETURNS_FUNCTION && !Z_ISREF_P(retval_ptr))) {
+ ZEND_ASSERT(retval_ptr != &EG(uninitialized_zval));
+ if (opline->extended_value == ZEND_RETURNS_FUNCTION && !Z_ISREF_P(retval_ptr)) {
zend_error(E_NOTICE, "Only variable references should be returned by reference");
if (EX(return_value)) {
ZVAL_NEW_REF(EX(return_value), retval_ptr);
/* If a function call result is yielded and the function did
* not return by reference we throw a notice. */
- if (IS_CV == IS_VAR &&
- (value_ptr == &EG(uninitialized_zval) ||
- (opline->extended_value == ZEND_RETURNS_FUNCTION &&
- !Z_ISREF_P(value_ptr)))) {
- zend_error(E_NOTICE, "Only variable references should be yielded by reference");
- ZVAL_COPY(&generator->value, value_ptr);
- } else {
+ do {
+ if (IS_CV == IS_VAR) {
+ ZEND_ASSERT(value_ptr != &EG(uninitialized_zval));
+ if (opline->extended_value == ZEND_RETURNS_FUNCTION
+ && !Z_ISREF_P(value_ptr)) {
+ zend_error(E_NOTICE, "Only variable references should be yielded by reference");
+ ZVAL_COPY(&generator->value, value_ptr);
+ break;
+ }
+ }
if (Z_ISREF_P(value_ptr)) {
Z_ADDREF_P(value_ptr);
} else {
ZVAL_MAKE_REF_EX(value_ptr, 2);
}
ZVAL_REF(&generator->value, Z_REF_P(value_ptr));
- }
+ } while (0);
}
} else {
/* If a function call result is yielded and the function did
* not return by reference we throw a notice. */
- if (IS_CV == IS_VAR &&
- (value_ptr == &EG(uninitialized_zval) ||
- (opline->extended_value == ZEND_RETURNS_FUNCTION &&
- !Z_ISREF_P(value_ptr)))) {
- zend_error(E_NOTICE, "Only variable references should be yielded by reference");
- ZVAL_COPY(&generator->value, value_ptr);
- } else {
+ do {
+ if (IS_CV == IS_VAR) {
+ ZEND_ASSERT(value_ptr != &EG(uninitialized_zval));
+ if (opline->extended_value == ZEND_RETURNS_FUNCTION
+ && !Z_ISREF_P(value_ptr)) {
+ zend_error(E_NOTICE, "Only variable references should be yielded by reference");
+ ZVAL_COPY(&generator->value, value_ptr);
+ break;
+ }
+ }
if (Z_ISREF_P(value_ptr)) {
Z_ADDREF_P(value_ptr);
} else {
ZVAL_MAKE_REF_EX(value_ptr, 2);
}
ZVAL_REF(&generator->value, Z_REF_P(value_ptr));
- }
+ } while (0);
}
} else {
/* If a function call result is yielded and the function did
* not return by reference we throw a notice. */
- if (IS_CV == IS_VAR &&
- (value_ptr == &EG(uninitialized_zval) ||
- (opline->extended_value == ZEND_RETURNS_FUNCTION &&
- !Z_ISREF_P(value_ptr)))) {
- zend_error(E_NOTICE, "Only variable references should be yielded by reference");
- ZVAL_COPY(&generator->value, value_ptr);
- } else {
+ do {
+ if (IS_CV == IS_VAR) {
+ ZEND_ASSERT(value_ptr != &EG(uninitialized_zval));
+ if (opline->extended_value == ZEND_RETURNS_FUNCTION
+ && !Z_ISREF_P(value_ptr)) {
+ zend_error(E_NOTICE, "Only variable references should be yielded by reference");
+ ZVAL_COPY(&generator->value, value_ptr);
+ break;
+ }
+ }
if (Z_ISREF_P(value_ptr)) {
Z_ADDREF_P(value_ptr);
} else {
ZVAL_MAKE_REF_EX(value_ptr, 2);
}
ZVAL_REF(&generator->value, Z_REF_P(value_ptr));
- }
+ } while (0);
}
} else {
/* If a function call result is yielded and the function did
* not return by reference we throw a notice. */
- if (IS_CV == IS_VAR &&
- (value_ptr == &EG(uninitialized_zval) ||
- (opline->extended_value == ZEND_RETURNS_FUNCTION &&
- !Z_ISREF_P(value_ptr)))) {
- zend_error(E_NOTICE, "Only variable references should be yielded by reference");
- ZVAL_COPY(&generator->value, value_ptr);
- } else {
+ do {
+ if (IS_CV == IS_VAR) {
+ ZEND_ASSERT(value_ptr != &EG(uninitialized_zval));
+ if (opline->extended_value == ZEND_RETURNS_FUNCTION
+ && !Z_ISREF_P(value_ptr)) {
+ zend_error(E_NOTICE, "Only variable references should be yielded by reference");
+ ZVAL_COPY(&generator->value, value_ptr);
+ break;
+ }
+ }
if (Z_ISREF_P(value_ptr)) {
Z_ADDREF_P(value_ptr);
} else {
ZVAL_MAKE_REF_EX(value_ptr, 2);
}
ZVAL_REF(&generator->value, Z_REF_P(value_ptr));
- }
+ } while (0);
}
} else {
/* If a function call result is yielded and the function did
* not return by reference we throw a notice. */
- if (IS_CV == IS_VAR &&
- (value_ptr == &EG(uninitialized_zval) ||
- (opline->extended_value == ZEND_RETURNS_FUNCTION &&
- !Z_ISREF_P(value_ptr)))) {
- zend_error(E_NOTICE, "Only variable references should be yielded by reference");
- ZVAL_COPY(&generator->value, value_ptr);
- } else {
+ do {
+ if (IS_CV == IS_VAR) {
+ ZEND_ASSERT(value_ptr != &EG(uninitialized_zval));
+ if (opline->extended_value == ZEND_RETURNS_FUNCTION
+ && !Z_ISREF_P(value_ptr)) {
+ zend_error(E_NOTICE, "Only variable references should be yielded by reference");
+ ZVAL_COPY(&generator->value, value_ptr);
+ break;
+ }
+ }
if (Z_ISREF_P(value_ptr)) {
Z_ADDREF_P(value_ptr);
} else {
ZVAL_MAKE_REF_EX(value_ptr, 2);
}
ZVAL_REF(&generator->value, Z_REF_P(value_ptr));
- }
+ } while (0);
}
} else {