]> granicus.if.org Git - python/commitdiff
Issue #27225: Fixed a reference leak in type_new when setting __new__ fails.
authorSerhiy Storchaka <storchaka@gmail.com>
Sun, 5 Jun 2016 08:06:42 +0000 (11:06 +0300)
committerSerhiy Storchaka <storchaka@gmail.com>
Sun, 5 Jun 2016 08:06:42 +0000 (11:06 +0300)
Original patch by Xiang Zhang.

Objects/typeobject.c

index d78f2983759326680e531b18f68011b200b3ad79..cae511897dbbc1457a847514b87c9212e823737d 100644 (file)
@@ -2430,7 +2430,11 @@ type_new(PyTypeObject *metatype, PyObject *args, PyObject *kwds)
             Py_DECREF(type);
             return NULL;
         }
-        PyDict_SetItemString(dict, "__new__", tmp);
+        if (PyDict_SetItemString(dict, "__new__", tmp) < 0) {
+            Py_DECREF(tmp);
+            Py_DECREF(type);
+            return NULL;
+        }
         Py_DECREF(tmp);
     }