summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Misc/NEWS.d/next/Library/2023-10-25-08-42-05.gh-issue-111295.H2K4lf.rst1
-rw-r--r--Modules/timemodule.c27
2 files changed, 18 insertions, 10 deletions
diff --git a/Misc/NEWS.d/next/Library/2023-10-25-08-42-05.gh-issue-111295.H2K4lf.rst b/Misc/NEWS.d/next/Library/2023-10-25-08-42-05.gh-issue-111295.H2K4lf.rst
new file mode 100644
index 0000000..28b85ec
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2023-10-25-08-42-05.gh-issue-111295.H2K4lf.rst
@@ -0,0 +1 @@
+Fix :mod:`time` not checking for errors when initializing.
diff --git a/Modules/timemodule.c b/Modules/timemodule.c
index 6a872a2..bf48c89 100644
--- a/Modules/timemodule.c
+++ b/Modules/timemodule.c
@@ -1740,6 +1740,12 @@ get_gmtoff(time_t t, struct tm *p)
static int
init_timezone(PyObject *m)
{
+#define ADD_INT(NAME, VALUE) do { \
+ if (PyModule_AddIntConstant(m, NAME, VALUE) < 0) { \
+ return -1; \
+ } \
+} while (0)
+
assert(!PyErr_Occurred());
/* This code moved from PyInit_time wholesale to allow calling it from
@@ -1763,13 +1769,13 @@ init_timezone(PyObject *m)
#if !defined(MS_WINDOWS) || defined(MS_WINDOWS_DESKTOP) || defined(MS_WINDOWS_SYSTEM)
tzset();
#endif
- PyModule_AddIntConstant(m, "timezone", _Py_timezone);
+ ADD_INT("timezone", _Py_timezone);
#ifdef HAVE_ALTZONE
- PyModule_AddIntConstant(m, "altzone", altzone);
+ ADD_INT("altzone", altzone);
#else
- PyModule_AddIntConstant(m, "altzone", _Py_timezone-3600);
+ ADD_INT("altzone", _Py_timezone-3600);
#endif
- PyModule_AddIntConstant(m, "daylight", _Py_daylight);
+ ADD_INT("daylight", _Py_daylight);
#ifdef MS_WINDOWS
TIME_ZONE_INFORMATION tzinfo = {0};
GetTimeZoneInformation(&tzinfo);
@@ -1828,20 +1834,21 @@ init_timezone(PyObject *m)
PyObject *tzname_obj;
if (janzone < julyzone) {
/* DST is reversed in the southern hemisphere */
- PyModule_AddIntConstant(m, "timezone", julyzone);
- PyModule_AddIntConstant(m, "altzone", janzone);
- PyModule_AddIntConstant(m, "daylight", janzone != julyzone);
+ ADD_INT("timezone", julyzone);
+ ADD_INT("altzone", janzone);
+ ADD_INT("daylight", janzone != julyzone);
tzname_obj = Py_BuildValue("(zz)", julyname, janname);
} else {
- PyModule_AddIntConstant(m, "timezone", janzone);
- PyModule_AddIntConstant(m, "altzone", julyzone);
- PyModule_AddIntConstant(m, "daylight", janzone != julyzone);
+ ADD_INT("timezone", janzone);
+ ADD_INT("altzone", julyzone);
+ ADD_INT("daylight", janzone != julyzone);
tzname_obj = Py_BuildValue("(zz)", janname, julyname);
}
if (PyModule_Add(m, "tzname", tzname_obj) < 0) {
return -1;
}
#endif // !HAVE_DECL_TZNAME
+#undef ADD_INT
if (PyErr_Occurred()) {
return -1;