]> granicus.if.org Git - python/commitdiff
bpo-35373: Fix PyInit_time() error handling (GH-10865)
authorVictor Stinner <vstinner@redhat.com>
Mon, 3 Dec 2018 12:45:38 +0000 (13:45 +0100)
committerGitHub <noreply@github.com>
Mon, 3 Dec 2018 12:45:38 +0000 (13:45 +0100)
* 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.

Modules/timemodule.c

index 61041c90b87ed38cb2051a6e7f94d7a0c16e538b..01bb430ece604369a75c3e312d5628fb52a83c96 100644 (file)
@@ -1019,7 +1019,7 @@ of the timezone or altzone attributes on the time module.");
 #endif /* HAVE_MKTIME */
 
 #ifdef HAVE_WORKING_TZSET
-static int PyInit_timezone(PyObject *module);
+static int init_timezone(PyObject *module);
 
 static PyObject *
 time_tzset(PyObject *self, PyObject *unused)
@@ -1034,7 +1034,7 @@ time_tzset(PyObject *self, PyObject *unused)
     tzset();
 
     /* Reset timezone, altzone, daylight and tzname */
-    if (PyInit_timezone(m) < 0) {
+    if (init_timezone(m) < 0) {
          return NULL;
     }
     Py_DECREF(m);
@@ -1549,7 +1549,7 @@ get_gmtoff(time_t t, struct tm *p)
 #endif // !HAVE_DECL_TZNAME
 
 static int
-PyInit_timezone(PyObject *m)
+init_timezone(PyObject *m)
 {
     assert(!PyErr_Occurred());
 
@@ -1745,7 +1745,7 @@ PyInit_time(void)
         return NULL;
 
     /* Set, or reset, module variables like time.timezone */
-    if (PyInit_timezone(m) < 0) {
+    if (init_timezone(m) < 0) {
         return NULL;
     }
 
@@ -1798,6 +1798,9 @@ PyInit_time(void)
         utc_string = tm.tm_zone;
 #endif
 
+    if (PyErr_Occurred()) {
+        return NULL;
+    }
     return m;
 }