diff --git a/NEWS b/NEWS index 5da6aff0e82..fdf3b827000 100644 --- a/NEWS +++ b/NEWS @@ -44,6 +44,7 @@ PHP NEWS - Fixed tiger hash algorithm generating wrong results on big endian platforms. (Mike) - Fixed crash with DOMImplementation::createDocumentType("name:"). (Mike) +- Fixed bug #36638 (strtotime() returns false when 2nd argument < 1). (Derick) - Fixed bug #36611 (assignment to SimpleXML object attribute changes argument type to string). (Tony) - Fixed bug #36606 (pg_query_params() changes arguments type to string). (Tony) diff --git a/ext/date/lib/parse_date.c b/ext/date/lib/parse_date.c index 3b326100783..4c90f5f459a 100644 --- a/ext/date/lib/parse_date.c +++ b/ext/date/lib/parse_date.c @@ -1,4 +1,4 @@ -/* Generated by re2c 0.9.12 on Mon Feb 27 20:39:38 2006 */ +/* Generated by re2c 0.9.12 on Mon Mar 6 22:37:54 2006 */ #line 1 "ext/date/lib/parse_date.re" /* +----------------------------------------------------------------------+ @@ -1139,7 +1139,7 @@ yy11: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if(yych == '-') goto yy1185; - if(yych <= '0') goto yy12; + if(yych <= '/') goto yy12; if(yych <= '9') goto yy1186; goto yy12; yy12: @@ -16619,7 +16619,7 @@ yy1184: yy1185: YYDEBUG(1185, *YYCURSOR); yych = *++YYCURSOR; - if(yych <= '0') goto yy53; + if(yych <= '/') goto yy53; if(yych >= ':') goto yy53; goto yy1186; yy1186: diff --git a/ext/date/lib/parse_date.re b/ext/date/lib/parse_date.re index c763204b798..7d65c76bb0c 100644 --- a/ext/date/lib/parse_date.re +++ b/ext/date/lib/parse_date.re @@ -825,7 +825,7 @@ exif = year4 ":" monthlz ":" daylz " " hour24lz ":" minutelz ":" sec clf = day "/" monthabbr "/" year4 ":" hour24lz ":" minutelz ":" secondlz space tzcorrection; /* Timestamp format: @1126396800 */ -timestamp = "@" "-"? [1-9] [0-9]*; +timestamp = "@" "-"? [0-9]+; /* To fix some ambiguities */ dateshortwithtimeshort = datenoyear timeshort24; diff --git a/ext/date/php_date.c b/ext/date/php_date.c index eb94dbe8ca2..758c0191063 100644 --- a/ext/date/php_date.c +++ b/ext/date/php_date.c @@ -826,7 +826,7 @@ PHP_FUNCTION(strtotime) now = timelib_time_ctor(); initial_ts = emalloc(25); - snprintf(initial_ts, 24, "@%lu", preset_ts); + snprintf(initial_ts, 24, "@%ld", preset_ts); t = timelib_strtotime(initial_ts, strlen(initial_ts), &error1, DATE_TIMEZONEDB); /* we ignore the error here, as this should never fail */ timelib_update_ts(t, tzi); now->tz_info = tzi;