Did we agree on this? I don't remember we concluded this discussion.
In any case, are you sure there's not a double free bug here? (Using $1
twice?). While I haven't validated this, it seems to be buggy just by
looking at it.

Andi 

> -----Original Message-----
> From: Marcus Boerger [mailto:[EMAIL PROTECTED] 
> Sent: Sunday, March 04, 2007 8:26 AM
> To: [EMAIL PROTECTED]; phpdoc@lists.php.net
> Subject: [ZEND-ENGINE-CVS] cvs: ZendEngine2 / zend_language_parser.y 
> 
> helly         Sun Mar  4 16:25:58 2007 UTC
> 
>   Modified files:              
>     /ZendEngine2      zend_language_parser.y 
>   Log:
>   - Implement '?:'
>   [DOC] "expr1 ?: expr1" is a shortcut for: "expr1 ? expr1 : expr2" as
>         exists in gcc and discussed some time back. Note that 
> this is not
>         an implementation ifsetor($var, default). While 
> ifsetor would not
>         generate any message for non existing variables or 
> array indices
>         the ternary shortcut does. Also the ternary shortcut 
> does a boolean
>         evaluation rather then checking for isset(). That way 
> ther ternary
>         shortcut can work on any expression while ifsetor can 
> only work on
>         variables. Also to be silent one has do do: "@$expr1 
> ?: $expr2".
>   
>   
> http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_language_parser
> .y?r1=1.178&r2=1.179&diff_format=u
> Index: ZendEngine2/zend_language_parser.y
> diff -u ZendEngine2/zend_language_parser.y:1.178 
> ZendEngine2/zend_language_parser.y:1.179
> --- ZendEngine2/zend_language_parser.y:1.178  Mon Jan 29 04:40:46 2007
> +++ ZendEngine2/zend_language_parser.y        Sun Mar  4 16:25:57 2007
> @@ -18,7 +18,7 @@
>     
> +-------------------------------------------------------------
> ---------+
>  */
>  
> -/* $Id: zend_language_parser.y,v 1.178 2007/01/29 04:40:46 
> iliaa Exp $ */
> +/* $Id: zend_language_parser.y,v 1.179 2007/03/04 16:25:57 
> helly Exp $ 
> +*/
>  
>  /*
>   * LALR shift/reduce conflicts and how they are resolved:
> @@ -611,6 +611,9 @@
>       |       expr '?' { zend_do_begin_qm_op(&$1, &$2 TSRMLS_CC); }
>               expr ':' { zend_do_qm_true(&$4, &$2, &$5 TSRMLS_CC); }
>               expr     { zend_do_qm_false(&$$, &$7, &$2, &$5 
> TSRMLS_CC); }
> +     |       expr '?' { zend_do_begin_qm_op(&$1, &$2 TSRMLS_CC); }
> +             ':'      { zend_do_qm_true(&$1, &$2, &$4 TSRMLS_CC); }
> +             expr     { zend_do_qm_false(&$$, &$6, &$2, &$4 
> TSRMLS_CC); }
>       |       internal_functions_in_yacc { $$ = $1; }
>       |       T_INT_CAST expr         { zend_do_cast(&$$, 
> &$2, IS_LONG TSRMLS_CC); }
>       |       T_DOUBLE_CAST expr      { zend_do_cast(&$$, 
> &$2, IS_DOUBLE TSRMLS_CC); }
> 
> --
> Zend Engine CVS Mailing List (http://cvs.php.net/) To 
> unsubscribe, visit: http://www.php.net/unsub.php
> 
> 

Reply via email to