diff options
author | Andi Gutmans <andi@php.net> | 1999-12-17 08:24:10 +0000 |
---|---|---|
committer | Andi Gutmans <andi@php.net> | 1999-12-17 08:24:10 +0000 |
commit | 7fe808ea028595d6bc1a72d016d5420845a57ae2 (patch) | |
tree | d35eaccb9f5b245e136654371527fcd58c624093 | |
parent | 6aa9078d1602ee411818ab5b6a89b45b2fbb6e0a (diff) | |
download | php-git-7fe808ea028595d6bc1a72d016d5420845a57ae2.tar.gz |
- By mistake commited this to the branch. It fixes a bug we introduced with
the return reference patch.
-rw-r--r-- | Zend/zend-parser.y | 6 | ||||
-rw-r--r-- | Zend/zend_compile.c | 4 | ||||
-rw-r--r-- | Zend/zend_compile.h | 2 |
3 files changed, 6 insertions, 6 deletions
diff --git a/Zend/zend-parser.y b/Zend/zend-parser.y index 1b543abf2a..78c743947e 100644 --- a/Zend/zend-parser.y +++ b/Zend/zend-parser.y @@ -179,9 +179,9 @@ statement: | T_BREAK expr ';' { do_brk_cont(ZEND_BRK, &$2 CLS_CC); } | T_CONTINUE ';' { do_brk_cont(ZEND_CONT, NULL CLS_CC); } | T_CONTINUE expr ';' { do_brk_cont(ZEND_CONT, &$2 CLS_CC); } - | T_RETURN ';' { do_return(NULL CLS_CC); } - | T_RETURN expr_without_variable ';' { do_return(&$2 CLS_CC); } - | T_RETURN cvar ';' { do_return(&$2 CLS_CC); } + | T_RETURN ';' { do_return(NULL, 0 CLS_CC); } + | T_RETURN expr_without_variable ';' { do_return(&$2, 0 CLS_CC); } + | T_RETURN cvar ';' { do_return(&$2, 1 CLS_CC); } | T_GLOBAL global_var_list | T_STATIC static_var_list | T_ECHO echo_expr_list ';' diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index e3d706ef5d..52d2cc10dd 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -965,11 +965,11 @@ static int generate_free_foreach_copy(znode *foreach_copy CLS_DC) return 0; } -void do_return(znode *expr CLS_DC) +void do_return(znode *expr, int do_end_vparse CLS_DC) { zend_op *opline; - if (expr->op_type==IS_VAR) { + if (do_end_vparse) { if (CG(active_op_array)->return_reference) { do_end_variable_parse(BP_VAR_W, 0 CLS_CC); } else { diff --git a/Zend/zend_compile.h b/Zend/zend_compile.h index a026b2c4b0..ecc2b02a8d 100644 --- a/Zend/zend_compile.h +++ b/Zend/zend_compile.h @@ -268,7 +268,7 @@ int do_begin_function_call(znode *function_name CLS_DC); void do_begin_dynamic_function_call(znode *function_name CLS_DC); void do_begin_class_member_function_call(znode *class_name, znode *function_name CLS_DC); void do_end_function_call(znode *function_name, znode *result, znode *argument_list, int is_method, int is_dynamic_fcall CLS_DC); -void do_return(znode *expr CLS_DC); +void do_return(znode *expr, int do_end_vparse CLS_DC); ZEND_API int do_bind_function_or_class(zend_op *opline, HashTable *function_table, HashTable *class_table, int compile_time); void do_early_binding(CLS_D); |