summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZeev Suraski <zeev@php.net>2001-07-19 14:15:50 +0000
committerZeev Suraski <zeev@php.net>2001-07-19 14:15:50 +0000
commit01814bb2b8bf46f40c0117d880097574ed8b5802 (patch)
tree4909899d7492e0ed96c2b489973be18e23ad4cd7
parent06fc55cc679feabb8060ad1259b714bae7794d36 (diff)
downloadphp-git-01814bb2b8bf46f40c0117d880097574ed8b5802.tar.gz
Fix bug #11970, strike 2
-rw-r--r--Zend/zend_compile.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c
index 149e02bf4d..1ed37be15b 100644
--- a/Zend/zend_compile.c
+++ b/Zend/zend_compile.c
@@ -1041,12 +1041,13 @@ void zend_do_return(znode *expr, int do_end_vparse CLS_DC)
{
zend_op *opline;
- if (do_end_vparse) {
- if (CG(active_op_array)->return_reference) {
- zend_do_end_variable_parse(BP_VAR_W, 0 CLS_CC);
- } else {
- zend_do_end_variable_parse(BP_VAR_R, 0 CLS_CC);
+ if (CG(active_op_array)->return_reference) {
+ if (!do_end_vparse) {
+ zend_error(E_COMPILE_ERROR, "Only variables may be returned by reference");
}
+ zend_do_end_variable_parse(BP_VAR_W, 0 CLS_CC);
+ } else {
+ zend_do_end_variable_parse(BP_VAR_R, 0 CLS_CC);
}
#ifdef ZTS
zend_stack_apply_with_argument(&CG(switch_cond_stack), ZEND_STACK_APPLY_TOPDOWN, (int (*)(void *element, void *)) generate_free_switch_expr CLS_CC);