]> granicus.if.org Git - php/commitdiff
Add missing zend_do_free call
authorNikita Popov <nikic@php.net>
Wed, 19 Dec 2012 14:21:34 +0000 (15:21 +0100)
committerNikita Popov <nikic@php.net>
Wed, 19 Dec 2012 14:21:34 +0000 (15:21 +0100)
This is a followup to d53f1bf8ab. When the yield *statement* is used its
return value still needs to be freed.

Zend/zend_language_parser.y

index c1514c5d783c149b5aa8afc3d8c12f7ddfa6ed7e..c97361b20b1f1dd37520d9ab6c23539d19c74dbc 100644 (file)
@@ -300,7 +300,7 @@ unticked_statement:
        |       T_RETURN ';'                                            { zend_do_return(NULL, 0 TSRMLS_CC); }
        |       T_RETURN expr_without_variable ';'      { zend_do_return(&$2, 0 TSRMLS_CC); }
        |       T_RETURN variable ';'                           { zend_do_return(&$2, 1 TSRMLS_CC); }
-       |       yield_expr ';' { $$ = $1; }
+       |       yield_expr ';' { zend_do_free(&$1 TSRMLS_CC); }
        |       T_GLOBAL global_var_list ';'
        |       T_STATIC static_var_list ';'
        |       T_ECHO echo_expr_list ';'