summaryrefslogtreecommitdiffstats
path: root/Objects
diff options
context:
space:
mode:
authorBenjamin Peterson <benjamin@python.org>2012-05-08 13:22:24 (GMT)
committerBenjamin Peterson <benjamin@python.org>2012-05-08 13:22:24 (GMT)
commit89a6e9a27b565d8143c3e064aae92e831ff14801 (patch)
tree3e5cd9848129a36da27163920dcd744d0d3fb8ab /Objects
parentd9e4a414d7bb634f1f946ff9052ece05d17109bb (diff)
downloadcpython-89a6e9a27b565d8143c3e064aae92e831ff14801.zip
cpython-89a6e9a27b565d8143c3e064aae92e831ff14801.tar.gz
cpython-89a6e9a27b565d8143c3e064aae92e831ff14801.tar.bz2
fix possible refleak (closes #14752)
Diffstat (limited to 'Objects')
-rw-r--r--Objects/typeobject.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/Objects/typeobject.c b/Objects/typeobject.c
index 13a20f7..9430d39 100644
--- a/Objects/typeobject.c
+++ b/Objects/typeobject.c
@@ -3527,6 +3527,7 @@ add_methods(PyTypeObject *type, PyMethodDef *meth)
for (; meth->ml_name != NULL; meth++) {
PyObject *descr;
+ int err;
if (PyDict_GetItemString(dict, meth->ml_name) &&
!(meth->ml_flags & METH_COEXIST))
continue;
@@ -3550,9 +3551,10 @@ add_methods(PyTypeObject *type, PyMethodDef *meth)
}
if (descr == NULL)
return -1;
- if (PyDict_SetItemString(dict, meth->ml_name, descr) < 0)
- return -1;
+ err = PyDict_SetItemString(dict, meth->ml_name, descr);
Py_DECREF(descr);
+ if (err < 0)
+ return -1;
}
return 0;
}