diff options
author | Ezio Melotti <ezio.melotti@gmail.com> | 2012-09-21 14:26:35 (GMT) |
---|---|---|
committer | Ezio Melotti <ezio.melotti@gmail.com> | 2012-09-21 14:26:35 (GMT) |
commit | cadff70ba5a761e5899d09c918ad6c87cfb07b7d (patch) | |
tree | 811aaa4a285ff38a745fa8d323047eff835b0fa5 | |
parent | 003014bf1e7efcfcad19bd391b206e111ea21083 (diff) | |
download | cpython-cadff70ba5a761e5899d09c918ad6c87cfb07b7d.zip cpython-cadff70ba5a761e5899d09c918ad6c87cfb07b7d.tar.gz cpython-cadff70ba5a761e5899d09c918ad6c87cfb07b7d.tar.bz2 |
#15421: fix an OverflowError in Calendar.itermonthdates() after datetime.MAXYEAR. Patch by Cédric Krier.
-rw-r--r-- | Lib/calendar.py | 6 | ||||
-rw-r--r-- | Lib/test/test_calendar.py | 6 | ||||
-rw-r--r-- | Misc/NEWS | 3 |
3 files changed, 14 insertions, 1 deletions
diff --git a/Lib/calendar.py b/Lib/calendar.py index 3106ef2..2329578 100644 --- a/Lib/calendar.py +++ b/Lib/calendar.py @@ -161,7 +161,11 @@ class Calendar(object): oneday = datetime.timedelta(days=1) while True: yield date - date += oneday + try: + date += oneday + except OverflowError: + # Adding one day could fail after datetime.MAXYEAR + break if date.month != month and date.weekday() == self.firstweekday: break diff --git a/Lib/test/test_calendar.py b/Lib/test/test_calendar.py index 2a56268..5d6549c 100644 --- a/Lib/test/test_calendar.py +++ b/Lib/test/test_calendar.py @@ -3,6 +3,7 @@ import unittest from test import test_support import locale +import datetime result_2004_text = """ @@ -262,6 +263,11 @@ class CalendarTestCase(unittest.TestCase): new_october = calendar.TextCalendar().formatmonthname(2010, 10, 10) self.assertEquals(old_october, new_october) + def test_itermonthdates(self): + # ensure itermonthdates doesn't overflow after datetime.MAXYEAR + # see #15421 + list(calendar.Calendar().itermonthdates(datetime.MAXYEAR, 12)) + class MonthCalendarTestCase(unittest.TestCase): def setUp(self): @@ -103,6 +103,9 @@ Core and Builtins Library ------- +- Issue #15421: fix an OverflowError in Calendar.itermonthdates() after + datetime.MAXYEAR. Patch by Cédric Krier. + - Issue #15970: xml.etree.ElementTree now serializes correctly the empty HTML elements 'meta' and 'param'. |