Re: [PATCH] ext/date tzinfo structure references
| From: | Derick Rethans | Date: | Tue, 08 Jul 2008 14:59:43 +0000 |
| Subject: | Re: [PATCH] ext/date tzinfo structure references | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-38858@lists.php.net to get a copy of this message | ||
On Tue, 8 Jul 2008, Joe Orton wrote:
> The result of calling getTimezone() on a Date object results in a
> DateTimeZone object with a reference to the dateobj->time->tz_info
> object which may get later destroyed.
>
> This can cause unexpected script behaviour or interpreter crashes, test
> case in attachment (1).
>
> When I fixed this the obvious way, per attachment 3, by adding a clone,
> I wondered where the cloned tzinfo structures would get destroyed and I
> can't see anywhere.
>
> After looking at this further - so far as I can tell, the duplication of
> the tzinfo structures throughout this code is not actually necessary;
> when the structures are created they are referenced from the global
> tzcache and will hence last "forever" anyway. The structures are not
> changed anywhere either, again AFAICT; though they aren't treated as
> const so maybe I'm missing something there.
>
> So simply copying pointers around would simplify the code, fix leaks and
> fix the bug as well. That's attachment (2).
>
> What do you think?
Sounds sane... I was going to have a look at this tonight and do
something similar - this saves some work. I'll see if it fixes all
leaks, and commit it if it works fine. Thanks for the patch.
regards,
Derick
--
Derick Rethans
http://derickrethans.nl | http://ezcomponents.org | http://xdebug.org