[Python-checkins] bpo-31723: Fix refleaks when zipimporter.__init__() is called more than once (GH-3919)

Victor Stinner webhook-mailer at python.org
Mon Oct 9 11:06:21 EDT 2017


https://github.com/python/cpython/commit/c0cabc23bbe474d542ff8a4f1243f4ec3cce5549
commit: c0cabc23bbe474d542ff8a4f1243f4ec3cce5549
branch: master
author: Oren Milman <orenmn at gmail.com>
committer: Victor Stinner <victor.stinner at gmail.com>
date: 2017-10-09T08:06:19-07:00
summary:

bpo-31723: Fix refleaks when zipimporter.__init__() is called more than once (GH-3919)

files:
M Modules/zipimport.c

diff --git a/Modules/zipimport.c b/Modules/zipimport.c
index 493e6db394a..895cd800fc4 100644
--- a/Modules/zipimport.c
+++ b/Modules/zipimport.c
@@ -164,10 +164,10 @@ zipimport_zipimporter___init___impl(ZipImporter *self, PyObject *path)
     }
     else
         Py_INCREF(files);
-    self->files = files;
+    Py_XSETREF(self->files, files);
 
     /* Transfer reference */
-    self->archive = filename;
+    Py_XSETREF(self->archive, filename);
     filename = NULL;
 
     /* Check if there is a prefix directory following the filename. */
@@ -176,7 +176,7 @@ zipimport_zipimporter___init___impl(ZipImporter *self, PyObject *path)
                                   PyUnicode_GET_LENGTH(path));
         if (tmp == NULL)
             goto error;
-        self->prefix = tmp;
+        Py_XSETREF(self->prefix, tmp);
         if (PyUnicode_READ_CHAR(path, len-1) != SEP) {
             /* add trailing SEP */
             tmp = PyUnicode_FromFormat("%U%c", self->prefix, SEP);
@@ -185,8 +185,9 @@ zipimport_zipimporter___init___impl(ZipImporter *self, PyObject *path)
             Py_SETREF(self->prefix, tmp);
         }
     }
-    else
-        self->prefix = PyUnicode_New(0, 0);
+    else {
+        Py_XSETREF(self->prefix, PyUnicode_New(0, 0));
+    }
     Py_DECREF(path);
     return 0;
 



More information about the Python-checkins mailing list