On 10/06/2011 06:03 PM, Etienne Kneuss wrote:
> On Thu, Oct 6, 2011 at 17:31, Daniel K. <d...@uw.no> wrote:
>> The patch still applies to trunk, and I think it should be applied to
>> the 5.3 and 5.4 branches as well.
> 
> The new patch seems to be indeed better. My only concern is whether it
> covers all those cases now. Did you try passing all possible kinds of
> value expressions ? Or is it guaranteed to cover all cases by design?
> If not, we should probably add more of those cases in the tests.

It now covers all possible cases by design. The patched function
(zend_do_pass_param) is only called from the language parser, and in
Zend/zend_language_parser.y zend_do_pass_param() is called with the
second parameter set to ZEND_SEND_VAL for all expr_without_variable type
parameters.

>From php5.4-201110061230/Zend/zend_language_parser.y: line 538-541

non_empty_function_call_parameter_list:
        expr_without_variable   { Z_LVAL($$.u.constant) = 1;
zend_do_pass_param(&$1, ZEND_SEND_VAL, Z_LVAL($$.u.constant) TSRMLS_CC); }
    |   variable                { Z_LVAL($$.u.constant) = 1;
zend_do_pass_param(&$1, ZEND_SEND_VAR, Z_LVAL($$.u.constant) TSRMLS_CC); }
    |   '&' w_variable          { Z_LVAL($$.u.constant) = 1;
zend_do_pass_param(&$2, ZEND_SEND_REF, Z_LVAL($$.u.constant) TSRMLS_CC); }
[...]

So your concern should be addressed.


> Other than that, this looks fine.

Super.


Daniel K.

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to