derick Tue, 06 Dec 2011 06:04:24 +0000 Revision: http://svn.php.net/viewvc?view=revision&revision=320478
Log: - Fixed bug #52062: large timestamps with DateTime::getTimestamp and DateTime::setTimestamp. Bug: https://bugs.php.net/52062 (Assigned) large timestamps with DateTime::getTimestamp and DateTime::setTimestamp Changed paths: U php/php-src/branches/PHP_5_3/ext/date/lib/parse_iso_intervals.c U php/php-src/branches/PHP_5_3/ext/date/lib/parse_iso_intervals.re A php/php-src/branches/PHP_5_3/ext/date/tests/bug52062.phpt U php/php-src/branches/PHP_5_4/ext/date/lib/parse_iso_intervals.c U php/php-src/branches/PHP_5_4/ext/date/lib/parse_iso_intervals.re A php/php-src/branches/PHP_5_4/ext/date/tests/bug52062.phpt U php/php-src/trunk/ext/date/lib/parse_iso_intervals.c U php/php-src/trunk/ext/date/lib/parse_iso_intervals.re A php/php-src/trunk/ext/date/tests/bug52062.phpt Modified: php/php-src/branches/PHP_5_3/ext/date/lib/parse_iso_intervals.c =================================================================== --- php/php-src/branches/PHP_5_3/ext/date/lib/parse_iso_intervals.c 2011-12-06 06:00:45 UTC (rev 320477) +++ php/php-src/branches/PHP_5_3/ext/date/lib/parse_iso_intervals.c 2011-12-06 06:04:24 UTC (rev 320478) @@ -1,4 +1,4 @@ -/* Generated by re2c 0.13.5 on Sat Nov 13 14:57:59 2010 */ +/* Generated by re2c 0.13.5 on Mon Dec 5 22:02:31 2011 */ #line 1 "ext/date/lib/parse_iso_intervals.re" /* +----------------------------------------------------------------------+ @@ -396,7 +396,7 @@ break; } - nr = timelib_get_unsigned_nr((char **) &ptr, 9); + nr = timelib_get_unsigned_nr((char **) &ptr, 12); switch (*ptr) { case 'Y': s->period->y = nr; break; case 'W': s->period->d = nr * 7; break; Modified: php/php-src/branches/PHP_5_3/ext/date/lib/parse_iso_intervals.re =================================================================== --- php/php-src/branches/PHP_5_3/ext/date/lib/parse_iso_intervals.re 2011-12-06 06:00:45 UTC (rev 320477) +++ php/php-src/branches/PHP_5_3/ext/date/lib/parse_iso_intervals.re 2011-12-06 06:04:24 UTC (rev 320478) @@ -364,7 +364,7 @@ break; } - nr = timelib_get_unsigned_nr((char **) &ptr, 9); + nr = timelib_get_unsigned_nr((char **) &ptr, 12); switch (*ptr) { case 'Y': s->period->y = nr; break; case 'W': s->period->d = nr * 7; break; Added: php/php-src/branches/PHP_5_3/ext/date/tests/bug52062.phpt =================================================================== --- php/php-src/branches/PHP_5_3/ext/date/tests/bug52062.phpt (rev 0) +++ php/php-src/branches/PHP_5_3/ext/date/tests/bug52062.phpt 2011-12-06 06:04:24 UTC (rev 320478) @@ -0,0 +1,21 @@ +--TEST-- +Bug #52062: large timestamps with DateTime::getTimestamp and DateTime::setTimestamp +--FILE-- +<?php +$d = new DateTime('@100000000000'); +var_dump($d->format('Y-m-d H:i:s U')); +var_dump($d->getTimestamp()); + +$d->setTimestamp(100000000000); +var_dump($d->format('Y-m-d H:i:s U')); +var_dump($d->getTimestamp()); + +$i = new DateInterval('PT100000000000S'); +var_dump($i->format('%s')); +?> +--EXPECT-- +string(32) "5138-11-16 09:46:40 100000000000" +int(100000000000) +string(32) "5138-11-16 09:46:40 100000000000" +int(100000000000) +string(12) "100000000000" Modified: php/php-src/branches/PHP_5_4/ext/date/lib/parse_iso_intervals.c =================================================================== --- php/php-src/branches/PHP_5_4/ext/date/lib/parse_iso_intervals.c 2011-12-06 06:00:45 UTC (rev 320477) +++ php/php-src/branches/PHP_5_4/ext/date/lib/parse_iso_intervals.c 2011-12-06 06:04:24 UTC (rev 320478) @@ -1,4 +1,4 @@ -/* Generated by re2c 0.13.5 on Sat Nov 13 14:56:07 2010 */ +/* Generated by re2c 0.13.5 on Mon Dec 5 22:02:27 2011 */ #line 1 "ext/date/lib/parse_iso_intervals.re" /* +----------------------------------------------------------------------+ @@ -396,7 +396,7 @@ break; } - nr = timelib_get_unsigned_nr((char **) &ptr, 9); + nr = timelib_get_unsigned_nr((char **) &ptr, 12); switch (*ptr) { case 'Y': s->period->y = nr; break; case 'W': s->period->d = nr * 7; break; Modified: php/php-src/branches/PHP_5_4/ext/date/lib/parse_iso_intervals.re =================================================================== --- php/php-src/branches/PHP_5_4/ext/date/lib/parse_iso_intervals.re 2011-12-06 06:00:45 UTC (rev 320477) +++ php/php-src/branches/PHP_5_4/ext/date/lib/parse_iso_intervals.re 2011-12-06 06:04:24 UTC (rev 320478) @@ -364,7 +364,7 @@ break; } - nr = timelib_get_unsigned_nr((char **) &ptr, 9); + nr = timelib_get_unsigned_nr((char **) &ptr, 12); switch (*ptr) { case 'Y': s->period->y = nr; break; case 'W': s->period->d = nr * 7; break; Added: php/php-src/branches/PHP_5_4/ext/date/tests/bug52062.phpt =================================================================== --- php/php-src/branches/PHP_5_4/ext/date/tests/bug52062.phpt (rev 0) +++ php/php-src/branches/PHP_5_4/ext/date/tests/bug52062.phpt 2011-12-06 06:04:24 UTC (rev 320478) @@ -0,0 +1,21 @@ +--TEST-- +Bug #52062: large timestamps with DateTime::getTimestamp and DateTime::setTimestamp +--FILE-- +<?php +$d = new DateTime('@100000000000'); +var_dump($d->format('Y-m-d H:i:s U')); +var_dump($d->getTimestamp()); + +$d->setTimestamp(100000000000); +var_dump($d->format('Y-m-d H:i:s U')); +var_dump($d->getTimestamp()); + +$i = new DateInterval('PT100000000000S'); +var_dump($i->format('%s')); +?> +--EXPECT-- +string(32) "5138-11-16 09:46:40 100000000000" +int(100000000000) +string(32) "5138-11-16 09:46:40 100000000000" +int(100000000000) +string(12) "100000000000" Modified: php/php-src/trunk/ext/date/lib/parse_iso_intervals.c =================================================================== --- php/php-src/trunk/ext/date/lib/parse_iso_intervals.c 2011-12-06 06:00:45 UTC (rev 320477) +++ php/php-src/trunk/ext/date/lib/parse_iso_intervals.c 2011-12-06 06:04:24 UTC (rev 320478) @@ -1,4 +1,4 @@ -/* Generated by re2c 0.13.5 on Sat Nov 13 14:56:07 2010 */ +/* Generated by re2c 0.13.5 on Mon Dec 5 22:02:35 2011 */ #line 1 "ext/date/lib/parse_iso_intervals.re" /* +----------------------------------------------------------------------+ @@ -396,7 +396,7 @@ break; } - nr = timelib_get_unsigned_nr((char **) &ptr, 9); + nr = timelib_get_unsigned_nr((char **) &ptr, 12); switch (*ptr) { case 'Y': s->period->y = nr; break; case 'W': s->period->d = nr * 7; break; Modified: php/php-src/trunk/ext/date/lib/parse_iso_intervals.re =================================================================== --- php/php-src/trunk/ext/date/lib/parse_iso_intervals.re 2011-12-06 06:00:45 UTC (rev 320477) +++ php/php-src/trunk/ext/date/lib/parse_iso_intervals.re 2011-12-06 06:04:24 UTC (rev 320478) @@ -364,7 +364,7 @@ break; } - nr = timelib_get_unsigned_nr((char **) &ptr, 9); + nr = timelib_get_unsigned_nr((char **) &ptr, 12); switch (*ptr) { case 'Y': s->period->y = nr; break; case 'W': s->period->d = nr * 7; break; Added: php/php-src/trunk/ext/date/tests/bug52062.phpt =================================================================== --- php/php-src/trunk/ext/date/tests/bug52062.phpt (rev 0) +++ php/php-src/trunk/ext/date/tests/bug52062.phpt 2011-12-06 06:04:24 UTC (rev 320478) @@ -0,0 +1,21 @@ +--TEST-- +Bug #52062: large timestamps with DateTime::getTimestamp and DateTime::setTimestamp +--FILE-- +<?php +$d = new DateTime('@100000000000'); +var_dump($d->format('Y-m-d H:i:s U')); +var_dump($d->getTimestamp()); + +$d->setTimestamp(100000000000); +var_dump($d->format('Y-m-d H:i:s U')); +var_dump($d->getTimestamp()); + +$i = new DateInterval('PT100000000000S'); +var_dump($i->format('%s')); +?> +--EXPECT-- +string(32) "5138-11-16 09:46:40 100000000000" +int(100000000000) +string(32) "5138-11-16 09:46:40 100000000000" +int(100000000000) +string(12) "100000000000"
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php