|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2008-05-19 10:13 UTC] astax dot t at gmail dot com
Description:
------------
Crash when using DateTimeZone object, previously returned by DateTime::getTimezone()
This worked fine in PHP 5.2.5
Probably this is related to how DateTimeZone object is returned:
This code returns different results in 5.2.5 and 5.2.6
$old_tz = $d->getTimezone();
$d->setTimezone(new DateTimeZone('UTC'));
echo $old_tz->getName();
5.2.6 returns 'UTC', while 5.2.5 returns 'Asia/Novosibirsk' (my current timezone). Having in mind how objects in PHP5 are returned, I can accept this, but this must be documented properly and shouldn't cause crash.
Reproduce code:
---------------
$d = new DateTime();
$old_tz = $d->getTimezone();
$d->setTimezone(new DateTimeZone('UTC'));
// setDate() and setTime() may go here - just for this example to make some sense
$d->setTimezone($old_tz);
echo "Success";
Expected result:
----------------
Success
Actual result:
--------------
PHP interpreter crashes
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Wed Dec 03 05:00:01 2025 UTC |
Another reproduce script: <?php $date= date_create(); var_dump($date); $origtz= date_timezone_get($date); var_dump($origtz); date_timezone_set($date, timezone_open('GMT')); var_dump($date); $formatted= date_format($date, 'r'); var_dump($formatted); date_timezone_set($date, $origtz); var_dump($date); echo $formatted; ?> == Output == object(DateTime)#1 (0) { } object(DateTimeZone)#2 (0) { } object(DateTime)#1 (0) { } string(31) "Sat, 31 May 2008 10:49:27 +0000" Segmentation fault == /Output == PHP 5.2.6 (cgi) (built: May 19 2008 09:18:35) Copyright (c) 1997-2008 The PHP Group Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend Technologies