Fixed a bug in object.__reduce_ex__ (reduce_2) when using protocol
  2.  Failure to clear the error when attempts to get the __getstate__
  attribute fail caused intermittent errors and odd behavior.
diff --git a/Misc/NEWS b/Misc/NEWS
index 939ce66..33ff152 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -136,6 +136,10 @@
   same as split() except that it scans the string from the end
   working towards the beginning.  See SF feature request 801847.
 
+- Fixed a bug in object.__reduce_ex__ when using protocol 2.  Failure
+  to clear the error when attempts to get the __getstate__ attribute
+  fail caused intermittent errors and odd behavior.
+
 Extension modules
 -----------------
 
diff --git a/Objects/typeobject.c b/Objects/typeobject.c
index 6403103..f26ddd6 100644
--- a/Objects/typeobject.c
+++ b/Objects/typeobject.c
@@ -2581,6 +2581,7 @@
 			goto end;
 	}
 	else {
+		PyErr_Clear();
 		state = PyObject_GetAttrString(obj, "__dict__");
 		if (state == NULL) {
 			PyErr_Clear();