Fixed bug #52744 (cal_days_in_month incorrect for December 1 BCE). Original

patch by gpap at internet dot gr.
This commit is contained in:
Adam Harvey 2010-09-09 06:41:23 +00:00
parent bcea4e69bb
commit 97f6da74a1
3 changed files with 23 additions and 2 deletions

2
NEWS
View File

@ -20,6 +20,8 @@
- Fixed bug #52786 (PHP should reset section to [PHP] after ini sections).
(Fedora at famillecollet dot com)
- Fixed bug #52744 (cal_days_in_month incorrect for December 1 BCE).
(gpap at internet dot gr, Adam)
- Fixed bug #52725 (gcc builtin atomic functions were sometimes used when they
were not available). (fat)
- Fixed bug #52745 (Binding params doesn't work when selecting a date inside a

View File

@ -348,8 +348,15 @@ PHP_FUNCTION(cal_days_in_month)
sdn_next = calendar->to_jd(year, 1 + month, 1);
if (sdn_next == 0) {
/* if invalid, try first month of the next year... */
sdn_next = calendar->to_jd(year + 1, 1, 1);
/* If the next month is invalid, then we need to try the first month of
* the next year, bearing in mind that the next year after 1 BCE is
* actually 1 AD and not 0. */
if (year == -1) {
sdn_next = calendar->to_jd(1, 1, 1);
}
else {
sdn_next = calendar->to_jd(year + 1, 1, 1);
}
}
RETURN_LONG(sdn_next - sdn_start);

View File

@ -0,0 +1,12 @@
--TEST--
Bug #52744 (cal_days_in_month incorrect for December 1 BCE)
--SKIPIF--
<?php include 'skipif.inc'; ?>
--FILE--
<?php
var_dump(cal_days_in_month(CAL_GREGORIAN, 12, -1));
var_dump(cal_days_in_month(CAL_JULIAN, 12, -1));
?>
--EXPECT--
int(31)
int(31)