summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDerick Rethans <derick@php.net>2008-01-17 20:45:08 +0000
committerDerick Rethans <derick@php.net>2008-01-17 20:45:08 +0000
commit3d0797da2b1215d1f567220ec415b4f07f7a9e74 (patch)
tree19c35f7645f3c7e738e544450893eec8d80668ee
parent3fb0e425e0aeaf4eda32ed78cc3c19dcfe1a8a76 (diff)
downloadphp-git-3d0797da2b1215d1f567220ec415b4f07f7a9e74.tar.gz
- MFH: Fixed bug #43075 (Support 2007-11-01T24:00:00+00:00).
-rw-r--r--NEWS1
-rw-r--r--ext/date/lib/parse_date.c40
-rw-r--r--ext/date/lib/parse_date.re4
-rw-r--r--ext/date/tests/bug43075.phpt9
4 files changed, 32 insertions, 22 deletions
diff --git a/NEWS b/NEWS
index 405cada2ec..26952cd37d 100644
--- a/NEWS
+++ b/NEWS
@@ -80,6 +80,7 @@ PHP NEWS
- Fixed bug #43808 (date_create never fails (even when it should)). (Derick)
- Fixed bug #43527 (DateTime created from a timestamp reports environment
timezone). (Derick)
+- Fixed bug #43075 (Support 2007-11-01T24:00:00+00:00). (Derick)
- Fixed bug #43003 (Invalid timezone reported for DateTime objects constructed
using a timestamp). (Derick)
- Fixed bug #43143 (Warning about empty IV with MCRYPT_MODE_ECB). (Derick)
diff --git a/ext/date/lib/parse_date.c b/ext/date/lib/parse_date.c
index 690888aa50..978159fbdd 100644
--- a/ext/date/lib/parse_date.c
+++ b/ext/date/lib/parse_date.c
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.12.1 on Thu Jan 17 09:50:31 2008 */
+/* Generated by re2c 0.12.1 on Thu Jan 17 21:36:33 2008 */
#line 1 "ext/date/lib/parse_date.re"
/*
+----------------------------------------------------------------------+
@@ -1451,8 +1451,8 @@ yy15:
case '0':
case '1':
case '2':
- case '3': goto yy1238;
- case '4':
+ case '3':
+ case '4': goto yy1238;
case '5':
case '6':
case '7':
@@ -5548,7 +5548,7 @@ yy318:
if(yych == '.') goto yy371;
goto yy308;
} else {
- if(yych <= '3') goto yy403;
+ if(yych <= '4') goto yy403;
if(yych <= '9') goto yy400;
if(yych <= ':') goto yy371;
goto yy308;
@@ -5630,7 +5630,7 @@ yy328:
if(yych == '.') goto yy330;
goto yy53;
} else {
- if(yych <= '3') goto yy329;
+ if(yych <= '4') goto yy329;
if(yych == ':') goto yy330;
goto yy53;
}
@@ -6013,7 +6013,7 @@ yy362:
yych = *++YYCURSOR;
if(yych <= '5') {
if(yych <= '/') goto yy332;
- if(yych >= '4') goto yy365;
+ if(yych >= '5') goto yy365;
} else {
if(yych <= '9') goto yy337;
if(yych <= ':') goto yy364;
@@ -6073,7 +6073,7 @@ yy368:
if(yych == '.') goto yy371;
goto yy308;
} else {
- if(yych <= '3') goto yy398;
+ if(yych <= '4') goto yy398;
if(yych <= '9') goto yy370;
if(yych <= ':') goto yy371;
goto yy308;
@@ -6633,7 +6633,7 @@ yy410:
if(yych == '.') goto yy371;
goto yy308;
} else {
- if(yych <= '3') goto yy413;
+ if(yych <= '4') goto yy413;
if(yych <= '9') goto yy412;
if(yych <= ':') goto yy371;
goto yy308;
@@ -6714,7 +6714,7 @@ yy417:
if(yych == '.') goto yy420;
goto yy308;
} else {
- if(yych <= '3') goto yy434;
+ if(yych <= '4') goto yy434;
if(yych <= '9') goto yy433;
if(yych <= ':') goto yy420;
goto yy308;
@@ -7210,7 +7210,7 @@ yy444:
if(yych == '.') goto yy447;
goto yy308;
} else {
- if(yych <= '3') goto yy458;
+ if(yych <= '4') goto yy458;
if(yych <= '9') goto yy457;
if(yych <= ':') goto yy447;
goto yy308;
@@ -11893,7 +11893,7 @@ yy641:
if(yych <= 0x1F) goto yy3;
goto yy57;
} else {
- if(yych <= '3') {
+ if(yych <= '4') {
if(yych <= '/') goto yy3;
goto yy662;
} else {
@@ -15000,7 +15000,7 @@ yy874:
YYDEBUG(874, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych >= '4') goto yy53;
+ if(yych >= '5') goto yy53;
yy875:
YYDEBUG(875, *YYCURSOR);
yych = *++YYCURSOR;
@@ -15095,7 +15095,7 @@ yy888:
yych = *++YYCURSOR;
if(yych <= '5') {
if(yych <= '/') goto yy887;
- if(yych >= '4') goto yy891;
+ if(yych >= '5') goto yy891;
} else {
if(yych <= '9') goto yy892;
if(yych <= ':') goto yy890;
@@ -16359,7 +16359,7 @@ yy1012:
YYDEBUG(1012, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych >= '4') goto yy53;
+ if(yych >= '5') goto yy53;
yy1013:
YYDEBUG(1013, *YYCURSOR);
yych = *++YYCURSOR;
@@ -16750,7 +16750,7 @@ yy1031:
YYDEBUG(1031, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '3') goto yy1037;
+ if(yych <= '4') goto yy1037;
if(yych <= '5') goto yy1033;
goto yy53;
yy1032:
@@ -16836,7 +16836,7 @@ yy1044:
yych = *++YYCURSOR;
if(yych <= '5') {
if(yych <= '/') goto yy53;
- if(yych <= '3') goto yy1052;
+ if(yych <= '4') goto yy1052;
goto yy1033;
} else {
if(yych == ':') goto yy1046;
@@ -17749,7 +17749,7 @@ yy1165:
YYDEBUG(1165, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '3') goto yy1166;
+ if(yych <= '4') goto yy1166;
if(yych == ':') goto yy1167;
goto yy53;
yy1166:
@@ -17918,7 +17918,7 @@ yy1182:
YYDEBUG(1182, *YYCURSOR);
yych = *++YYCURSOR;
if(yych <= '/') goto yy53;
- if(yych <= '3') goto yy1183;
+ if(yych <= '4') goto yy1183;
if(yych == ':') goto yy1167;
goto yy53;
yy1183:
@@ -18003,7 +18003,7 @@ yy1196:
yych = *++YYCURSOR;
if(yych <= '5') {
if(yych <= '/') goto yy1021;
- if(yych >= '4') goto yy1199;
+ if(yych >= '5') goto yy1199;
} else {
if(yych <= '9') goto yy1020;
if(yych <= ':') goto yy1198;
@@ -19528,7 +19528,7 @@ yy1283:
if(yych == '.') goto yy1240;
goto yy53;
} else {
- if(yych <= '3') goto yy1285;
+ if(yych <= '4') goto yy1285;
if(yych == ':') goto yy1240;
goto yy53;
}
diff --git a/ext/date/lib/parse_date.re b/ext/date/lib/parse_date.re
index 986fc9ce63..7bcf4af602 100644
--- a/ext/date/lib/parse_date.re
+++ b/ext/date/lib/parse_date.re
@@ -836,8 +836,8 @@ frac = "."[0-9]+;
ago = 'ago';
-hour24 = [01]?[0-9] | "2"[0-3];
-hour24lz = [01][0-9] | "2"[0-3];
+hour24 = [01]?[0-9] | "2"[0-4];
+hour24lz = [01][0-9] | "2"[0-4];
hour12 = "0"?[1-9] | "1"[0-2];
minute = [0-5]?[0-9];
minutelz = [0-5][0-9];
diff --git a/ext/date/tests/bug43075.phpt b/ext/date/tests/bug43075.phpt
new file mode 100644
index 0000000000..98e01193e2
--- /dev/null
+++ b/ext/date/tests/bug43075.phpt
@@ -0,0 +1,9 @@
+--TEST--
+Bug #43075 (Support 24 as hour)
+--FILE--
+<?php
+$d = date_create("2007-11-01T24:34:00+00:00");
+echo $d->format("c");
+?>
+--EXPECT--
+2007-11-02T00:34:00+00:00