changeset: 76837:5319a4bf72e7 branch: 2.7 parent: 76832:72df255a7716 user: Benjamin Peterson date: Tue May 08 09:22:24 2012 -0400 files: Objects/typeobject.c description: fix possible refleak (closes #14752) diff -r 72df255a7716 -r 5319a4bf72e7 Objects/typeobject.c --- a/Objects/typeobject.c Mon May 07 22:23:48 2012 -0400 +++ b/Objects/typeobject.c Tue May 08 09:22:24 2012 -0400 @@ -3565,6 +3565,7 @@ for (; meth->ml_name != NULL; meth++) { PyObject *descr; + int err; if (PyDict_GetItemString(dict, meth->ml_name) && !(meth->ml_flags & METH_COEXIST)) continue; @@ -3588,9 +3589,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; }

AltStyle によって変換されたページ (->オリジナル) /