summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2016-06-05 08:06:42 (GMT)
committerSerhiy Storchaka <storchaka@gmail.com>2016-06-05 08:06:42 (GMT)
commit1a9ee946b0bd9eb93e48833e0f4de6b338867673 (patch)
treeb3a97a82990344b80f43c4506202f1b7359135e3
parentfcbb2c48cf8a6de5e2a0347f25e5b44211a041bd (diff)
downloadcpython-1a9ee946b0bd9eb93e48833e0f4de6b338867673.zip
cpython-1a9ee946b0bd9eb93e48833e0f4de6b338867673.tar.gz
cpython-1a9ee946b0bd9eb93e48833e0f4de6b338867673.tar.bz2
Issue #27225: Fixed a reference leak in type_new when setting __new__ fails.
Original patch by Xiang Zhang.
-rw-r--r--Objects/typeobject.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/Objects/typeobject.c b/Objects/typeobject.c
index d78f298..cae5118 100644
--- a/Objects/typeobject.c
+++ b/Objects/typeobject.c
@@ -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);
}