Commit 3bb150d8 authored by Victor Stinner's avatar Victor Stinner Committed by GitHub

bpo-35373: Fix PyInit_time() error handling (GH-10865)

* PyInit_time() now returns NULL if an exception is raised.
* Rename PyInit_timezone() to init_timezone(). "PyInit_" prefix is
  a special prefix for function initializing a module.
  init_timezone() doesn't initialize a module and the function is not
  exported.
parent ab661496
...@@ -1019,7 +1019,7 @@ of the timezone or altzone attributes on the time module."); ...@@ -1019,7 +1019,7 @@ of the timezone or altzone attributes on the time module.");
#endif /* HAVE_MKTIME */ #endif /* HAVE_MKTIME */
#ifdef HAVE_WORKING_TZSET #ifdef HAVE_WORKING_TZSET
static int PyInit_timezone(PyObject *module); static int init_timezone(PyObject *module);
static PyObject * static PyObject *
time_tzset(PyObject *self, PyObject *unused) time_tzset(PyObject *self, PyObject *unused)
...@@ -1034,7 +1034,7 @@ time_tzset(PyObject *self, PyObject *unused) ...@@ -1034,7 +1034,7 @@ time_tzset(PyObject *self, PyObject *unused)
tzset(); tzset();
/* Reset timezone, altzone, daylight and tzname */ /* Reset timezone, altzone, daylight and tzname */
if (PyInit_timezone(m) < 0) { if (init_timezone(m) < 0) {
return NULL; return NULL;
} }
Py_DECREF(m); Py_DECREF(m);
...@@ -1549,7 +1549,7 @@ get_gmtoff(time_t t, struct tm *p) ...@@ -1549,7 +1549,7 @@ get_gmtoff(time_t t, struct tm *p)
#endif // !HAVE_DECL_TZNAME #endif // !HAVE_DECL_TZNAME
static int static int
PyInit_timezone(PyObject *m) init_timezone(PyObject *m)
{ {
assert(!PyErr_Occurred()); assert(!PyErr_Occurred());
...@@ -1745,7 +1745,7 @@ PyInit_time(void) ...@@ -1745,7 +1745,7 @@ PyInit_time(void)
return NULL; return NULL;
/* Set, or reset, module variables like time.timezone */ /* Set, or reset, module variables like time.timezone */
if (PyInit_timezone(m) < 0) { if (init_timezone(m) < 0) {
return NULL; return NULL;
} }
...@@ -1798,6 +1798,9 @@ PyInit_time(void) ...@@ -1798,6 +1798,9 @@ PyInit_time(void)
utc_string = tm.tm_zone; utc_string = tm.tm_zone;
#endif #endif
if (PyErr_Occurred()) {
return NULL;
}
return m; return m;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment