Re: ref fix revisited
| From: | Derick Rethans | Date: | Wed, 14 Sep 2005 12:36:44 +0000 |
| Subject: | Re: ref fix revisited | ||
| References: | 1 2 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-18877@lists.php.net to get a copy of this message | ||
On Tue, 13 Sep 2005, Rasmus Lerdorf wrote:
> Zeev Suraski wrote:
> >> But there are many other cases
> >> where a function legitimately takes a by-ref and doesn't necessarily
> >> write to it or the write is a secondary action not required for the code
> >> to work. Could we not catch this on the write instead of on the call?
> >
> > The problem is that there's no way to tell that element apart at that
> > time. It's too late. As soon as we treat a read-only zval as if it's
> > read/write (take a ** instead of a *), it's too late, since we can't
> > really detect later on where it came from.
>
> Since we can detect a ref to a temp var at call time now, how about
> making a local copy in the function and effectively treat it as a
> by-value arg and also issue an E_NOTICE or an E_STRICT? I think that
> would solve the corruption problem without breaking BC.
That's exactly what we do in 4.4.
Derick
--
Derick Rethans
http://derickrethans.nl | http://ez.no | http://xdebug.org