diff options
author | Benjamin Peterson <benjamin@python.org> | 2012-05-08 13:22:24 (GMT) |
---|---|---|
committer | Benjamin Peterson <benjamin@python.org> | 2012-05-08 13:22:24 (GMT) |
commit | 89a6e9a27b565d8143c3e064aae92e831ff14801 (patch) | |
tree | 3e5cd9848129a36da27163920dcd744d0d3fb8ab /Objects | |
parent | d9e4a414d7bb634f1f946ff9052ece05d17109bb (diff) | |
download | cpython-89a6e9a27b565d8143c3e064aae92e831ff14801.zip cpython-89a6e9a27b565d8143c3e064aae92e831ff14801.tar.gz cpython-89a6e9a27b565d8143c3e064aae92e831ff14801.tar.bz2 |
fix possible refleak (closes #14752)
Diffstat (limited to 'Objects')
-rw-r--r-- | Objects/typeobject.c | 6 |
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; } |