diff options
-rw-r--r-- | NEWS | 4 | ||||
-rw-r--r-- | ext/calendar/calendar.c | 4 | ||||
-rw-r--r-- | ext/calendar/tests/bug67976.phpt | 12 |
3 files changed, 20 insertions, 0 deletions
@@ -24,6 +24,10 @@ PHP NEWS (Bob) . Fixed bug #72683 (getmxrr broken). (Anatol) +- Calendar: + . Fixed bug #67976 (cal_days_month() fails for final month of the French + calendar). (cmb) + - COM: . Fixed bug #72569 (DOTNET/COM array parameters broke in PHP7). (Anatol) diff --git a/ext/calendar/calendar.c b/ext/calendar/calendar.c index 78d772adce..2e0f53e561 100644 --- a/ext/calendar/calendar.c +++ b/ext/calendar/calendar.c @@ -357,6 +357,10 @@ PHP_FUNCTION(cal_days_in_month) } else { sdn_next = calendar->to_jd(year + 1, 1, 1); + if (cal == CAL_FRENCH && sdn_next == 0) { + /* The French calendar ends on 0014-13-05. */ + sdn_next = 2380953; + } } } diff --git a/ext/calendar/tests/bug67976.phpt b/ext/calendar/tests/bug67976.phpt new file mode 100644 index 0000000000..74e0bc81b1 --- /dev/null +++ b/ext/calendar/tests/bug67976.phpt @@ -0,0 +1,12 @@ +--TEST-- +Bug #67976 (cal_days_month() fails for final month of the French calendar) +--SKIPIF-- +<?php +if (!extension_loaded('calendar')) die('skip ext/calendar required'); +?> +--FILE-- +<?php +var_dump(cal_days_in_month(CAL_FRENCH, 13, 14)); +?> +--EXPECT-- +int(5) |