From: Christoph M. Becker Date: Thu, 28 Jul 2016 17:13:58 +0000 (+0200) Subject: Fix #67976: cal_days_month() fails for final month of the French calendar X-Git-Tag: php-7.0.10RC1~18^2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=7ab39e2faef499c8a1857205fa332d2e38a0a584;p=php Fix #67976: cal_days_month() fails for final month of the French calendar The French calendar ends on 0014-13-05, so trying to calculate the Julian day of 0015-01-01 fails. We cater to that by returning the hard-coded value. --- diff --git a/NEWS b/NEWS index b03e691a33..98e9d42028 100644 --- a/NEWS +++ b/NEWS @@ -11,6 +11,10 @@ PHP NEWS . Fixed bug #72641 (phpize (on Windows) ignores PHP_PREFIX). (Yuji Uchiyama) +- Calendar: + . Fixed bug #67976 (cal_days_month() fails for final month of the French + calendar). (cmb) + - Curl: . Fixed bug #71144 (Segmentation fault when using cURL with ZTS). (maroszek at gmx dot net) diff --git a/ext/calendar/calendar.c b/ext/calendar/calendar.c index 74478e8b93..1f92b9f2e0 100644 --- a/ext/calendar/calendar.c +++ b/ext/calendar/calendar.c @@ -359,6 +359,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-- + +--FILE-- + +--EXPECT-- +int(5)