]> granicus.if.org Git - php/commitdiff
Fix leak
authorNikita Popov <nikic@php.net>
Fri, 11 Jul 2014 13:33:39 +0000 (15:33 +0200)
committerNikita Popov <nikic@php.net>
Fri, 11 Jul 2014 13:33:39 +0000 (15:33 +0200)
Zend/zend_compile.c
Zend/zend_language_parser.y

index aab3f7ebd865d2383f2e9f3c6c17962ea83e01e0..1fbfec5896500bf93920f741543328e8cf67f35d 100644 (file)
@@ -7397,6 +7397,7 @@ void zend_compile_switch(zend_ast *ast TSRMLS_DC) {
        }
 
        zend_stack_del_top(&CG(switch_cond_stack));
+       efree(jmpnz_opnums);
 }
 
 void zend_compile_stmt_list(zend_ast *ast TSRMLS_DC) {
index c832129a7d980e5c156be74a24d51f907cdfc055..44d3f0278f36725f8915c02fa2a0deaa0fc84249 100644 (file)
@@ -336,7 +336,6 @@ unticked_statement:
                        { $$.u.ast = zend_ast_create(4, ZEND_AST_FOR, $3.u.ast, $5.u.ast, $7.u.ast, $9.u.ast); }
        |       T_SWITCH parenthesis_expr switch_case_list
                        { $$.u.ast = zend_ast_create_binary(ZEND_AST_SWITCH, $2.u.ast, $3.u.ast); }
-       /*|     T_SWITCH parenthesis_expr       { AC($2); zend_do_switch_cond(&$2 TSRMLS_CC); } switch_case_list { zend_do_switch_end(&$4 TSRMLS_CC); AN($$); }*/
        |       T_BREAK ';'                     { $$.u.ast = zend_ast_create_unary(ZEND_BRK, NULL); }
        |       T_BREAK expr ';'        { $$.u.ast = zend_ast_create_unary(ZEND_BRK, $2.u.ast); }
        |       T_CONTINUE ';'          { $$.u.ast = zend_ast_create_unary(ZEND_CONT, NULL); }
@@ -511,7 +510,6 @@ switch_case_list:
        |       ':' ';' case_list T_ENDSWITCH ';'       { $$.u.ast = $3.u.ast; }
 ;
 
-
 case_list:
                /* empty */ { $$.u.ast = zend_ast_create_dynamic(ZEND_AST_SWITCH_LIST); }
        |       case_list T_CASE expr case_separator inner_statement_list
@@ -520,10 +518,8 @@ case_list:
        |       case_list T_DEFAULT case_separator inner_statement_list
                        { $$.u.ast = zend_ast_dynamic_add($1.u.ast,
                              zend_ast_create_binary(ZEND_AST_SWITCH_CASE, NULL, $4.u.ast)); }
-       /*|     case_list T_CASE expr case_separator { AC($3); zend_do_extended_info(TSRMLS_C);  zend_do_case_before_statement(&$1, &$2, &$3 TSRMLS_CC); } inner_statement_list { AS($6); zend_do_case_after_statement(&$$, &$2 TSRMLS_CC); $$.op_type = IS_CONST; }*/
 ;
 
-
 case_separator:
                ':'
        |       ';'