]> granicus.if.org Git - python/commitdiff
properly decref the return value of close()
authorBenjamin Peterson <benjamin@python.org>
Sat, 5 Jul 2014 00:00:25 +0000 (17:00 -0700)
committerBenjamin Peterson <benjamin@python.org>
Sat, 5 Jul 2014 00:00:25 +0000 (17:00 -0700)
Modules/_io/_iomodule.c

index 9e14b4ff40d5831a354ef4fa3a388a8214af914f..6f7af41382da28666a74e8cab42111a505ebce61 100644 (file)
@@ -455,11 +455,13 @@ io_open(PyObject *self, PyObject *args, PyObject *kwds)
 
   error:
     if (result != NULL) {
-        PyObject *exc, *val, *tb;
+        PyObject *exc, *val, *tb, *close_result;
         PyErr_Fetch(&exc, &val, &tb);
-        if (_PyObject_CallMethodId(result, &PyId_close, NULL) != NULL)
+        close_result = _PyObject_CallMethodId(result, &PyId_close, NULL);
+        if (close_result != NULL) {
+            Py_DECREF(close_result);
             PyErr_Restore(exc, val, tb);
-        else {
+        else {
             PyObject *exc2, *val2, *tb2;
             PyErr_Fetch(&exc2, &val2, &tb2);
             PyErr_NormalizeException(&exc, &val, &tb);