[Python-checkins] cpython (3.5): fix refleaks in PyDict_SetItem error cases (closes #27248)
benjamin.peterson
python-checkins at python.org
Thu Jul 7 02:28:33 EDT 2016
https://hg.python.org/cpython/rev/f1fcf60863f8
changeset: 102272:f1fcf60863f8
branch: 3.5
parent: 102270:438032e7c0a0
user: Benjamin Peterson <benjamin at python.org>
date: Wed Jul 06 23:26:32 2016 -0700
summary:
fix refleaks in PyDict_SetItem error cases (closes #27248)
files:
Objects/typeobject.c | 12 +++++++++---
1 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/Objects/typeobject.c b/Objects/typeobject.c
--- a/Objects/typeobject.c
+++ b/Objects/typeobject.c
@@ -4509,8 +4509,10 @@
descr = PyDescr_NewMember(type, memb);
if (descr == NULL)
return -1;
- if (PyDict_SetItemString(dict, memb->name, descr) < 0)
+ if (PyDict_SetItemString(dict, memb->name, descr) < 0) {
+ Py_DECREF(descr);
return -1;
+ }
Py_DECREF(descr);
}
return 0;
@@ -4529,8 +4531,10 @@
if (descr == NULL)
return -1;
- if (PyDict_SetItemString(dict, gsp->name, descr) < 0)
+ if (PyDict_SetItemString(dict, gsp->name, descr) < 0) {
+ Py_DECREF(descr);
return -1;
+ }
Py_DECREF(descr);
}
return 0;
@@ -7010,8 +7014,10 @@
descr = PyDescr_NewWrapper(type, p, *ptr);
if (descr == NULL)
return -1;
- if (PyDict_SetItem(dict, p->name_strobj, descr) < 0)
+ if (PyDict_SetItem(dict, p->name_strobj, descr) < 0) {
+ Py_DECREF(descr);
return -1;
+ }
Py_DECREF(descr);
}
}
--
Repository URL: https://hg.python.org/cpython
More information about the Python-checkins
mailing list