Patch by Amaury Forgeot d'Arc, review by me.
Library
-------
+- Issue #3660: fix a memory leak in the C accelerator of the pickle module.
+
- Issue #3160: the "bdist_wininst" distutils command didn't work.
- Issue #1658: tkinter changes dict size during iteration in both
if (setstate == NULL) {
if (PyErr_ExceptionMatches(PyExc_AttributeError))
PyErr_Clear();
- else
+ else {
+ Py_DECREF(state);
return -1;
+ }
}
else {
PyObject *result;
/* The explicit __setstate__ is responsible for everything. */
+ /* Ugh... this does not leak since unpickler_call() steals the
+ reference to state first. */
result = unpickler_call(self, setstate, state);
Py_DECREF(setstate);
if (result == NULL)