]> granicus.if.org Git - php/commitdiff
- By mistake commited this to the branch. It fixes a bug we introduced with
authorAndi Gutmans <andi@php.net>
Fri, 17 Dec 1999 08:24:10 +0000 (08:24 +0000)
committerAndi Gutmans <andi@php.net>
Fri, 17 Dec 1999 08:24:10 +0000 (08:24 +0000)
  the return reference patch.

Zend/zend-parser.y
Zend/zend_compile.c
Zend/zend_compile.h

index 1b543abf2a4c92361ed685aaa7e222ef42938eb1..78c743947ecc2acf66cff0164852eb7a5f64eac7 100644 (file)
@@ -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 ';'
index e3d706ef5d854a4e14321e596501332b0f32ef51..52d2cc10dd467ce73e458da650fd7dd96045d857 100644 (file)
@@ -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 {
index a026b2c4b0f3206cc8bbdddc9c071b1e00d2fbb8..ecc2b02a8d506470ca2e3a642617ae77669c5e9c 100644 (file)
@@ -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);