Issue #3660 (part of): fix a memory leak in _pickle.

Patch by Amaury Forgeot d'Arc, review by me.
diff --git a/Modules/_pickle.c b/Modules/_pickle.c
index ea5bbe2..f7b5212 100644
--- a/Modules/_pickle.c
+++ b/Modules/_pickle.c
@@ -3837,13 +3837,17 @@
     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)