(original) (raw)
changeset: 76836:d937b527b76e branch: 3.2 parent: 76834:91612618985b user: Benjamin Peterson benjamin@python.org date: Tue May 08 09:22:24 2012 -0400 files: Objects/typeobject.c description: fix possible refleak (closes #14752) diff -r 91612618985b -r d937b527b76e Objects/typeobject.c --- a/Objects/typeobject.c Tue May 08 03:51:18 2012 -0700 +++ b/Objects/typeobject.c Tue May 08 09:22:24 2012 -0400 @@ -3527,6 +3527,7 @@ 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 @@ } if (descr == NULL) return -1; - if (PyDict_SetItemString(dict, meth->ml_name, descr) < 0) + err = PyDict_SetItemString(dict, meth->ml_name, descr); + Py_DECREF(descr); + if (err < 0) return -1; - Py_DECREF(descr); } return 0; } /benjamin@python.org