[3.13] gh-156067: Fix two error handling issues in `_zoneinfo.load_data()` (GH-156068) (#156090)
StanFromIreland <[email protected]>
| Newsgroups | gmane.comp.python.cvs |
|---|---|
| Message-ID | <[email protected]> |
https://github.com/python/cpython/commit/200b98b9fb301dd4ccf93db0516d6f08f661feed commit: 200b98b9fb301dd4ccf93db0516d6f08f661feed branch: 3.13 author: Miss Islington (bot) <[email protected]> committer: StanFromIreland <[email protected]> date: 2026-08-20T09:37:56Z summary: [3.13] gh-156067: Fix two error handling issues in `_zoneinfo.load_data()` (GH-156068) (#156090) (cherry picked from commit 21a6a8a89246cb3c78d1e517084caf2d47c822f7) Co-authored-by: Stan Ulbrych <[email protected]> files: A Misc/NEWS.d/next/Library/2026-08-19-21-01-19.gh-issue-156067.1CXkqc.rst M Modules/_zoneinfo.c diff --git a/Misc/NEWS.d/next/Library/2026-08-19-21-01-19.gh-issue-156067.1CXkqc.rst b/Misc/NEWS.d/next/Library/2026-08-19-21-01-19.gh-issue-156067.1CXkqc.rst new file mode 100644 index 00000000000000..af4c778ece5d70 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2026-08-19-21-01-19.gh-issue-156067.1CXkqc.rst @@ -0,0 +1,2 @@ +Fix error handling in the :mod:`zoneinfo` accelerator module when a +transition index is ``-1`` or a TZ string's ``__bool__`` raises. diff --git a/Modules/_zoneinfo.c b/Modules/_zoneinfo.c index be24b4ceaacf37..54dab325704813 100644 --- a/Modules/_zoneinfo.c +++ b/Modules/_zoneinfo.c @@ -1068,7 +1068,7 @@ load_data(zoneinfo_state *state, PyZoneInfo_ZoneInfo *self, PyObject *file_obj) } Py_ssize_t cur_trans_idx = PyLong_AsSsize_t(num); - if (cur_trans_idx == -1) { + if (cur_trans_idx == -1 && PyErr_Occurred()) { goto error; } @@ -1179,7 +1179,12 @@ load_data(zoneinfo_state *state, PyZoneInfo_ZoneInfo *self, PyObject *file_obj) self->ttinfo_before = &(self->_ttinfos[0]); } - if (tz_str != Py_None && PyObject_IsTrue(tz_str)) { + int has_tz_str = PyObject_IsTrue(tz_str); + if (has_tz_str < 0) { + goto error; + } + + if (has_tz_str) { if (parse_tz_str(state, tz_str, &(self->tzrule_after))) { goto error; } _______________________________________________ Python-checkins mailing list -- [email protected] To unsubscribe send an email to [email protected] https://mail.python.org/mailman3//lists/python-checkins.python.org Member address: [email protected]