]> granicus.if.org Git - php/commitdiff
- Fixed bug #52062: large timestamps with DateTime::getTimestamp and DateTime::setTim...
authorDerick Rethans <derick@php.net>
Tue, 6 Dec 2011 06:04:24 +0000 (06:04 +0000)
committerDerick Rethans <derick@php.net>
Tue, 6 Dec 2011 06:04:24 +0000 (06:04 +0000)
ext/date/lib/parse_iso_intervals.c
ext/date/lib/parse_iso_intervals.re
ext/date/tests/bug52062.phpt [new file with mode: 0644]

index 3d8383b84d0e791102019d1824751ec3891c8dc8..a9a483861da5291fa39c6743e3bf1347edde7d48 100644 (file)
@@ -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 @@ yy6:
                                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;
index bf2c287276f35b852940e0867688f7c41f35c43c..8610803e3960c65492b6a8d017025461adb9b7d1 100644 (file)
@@ -364,7 +364,7 @@ isoweek          = year4 "-"? "W" weekofyear;
                                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;
diff --git a/ext/date/tests/bug52062.phpt b/ext/date/tests/bug52062.phpt
new file mode 100644 (file)
index 0000000..ae8fbc3
--- /dev/null
@@ -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"