mirror of
https://github.com/php/php-src.git
synced 2024-11-24 18:34:21 +08:00
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:
parent
bcea4e69bb
commit
97f6da74a1
2
NEWS
2
NEWS
@ -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
|
||||
|
@ -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);
|
||||
|
12
ext/calendar/tests/bug52744.phpt
Normal file
12
ext/calendar/tests/bug52744.phpt
Normal 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)
|
Loading…
Reference in New Issue
Block a user