Ok, read the source this time: PyErr_SetObject() does not steal a reference.
diff --git a/Doc/api/exceptions.tex b/Doc/api/exceptions.tex
index 88bf00d..6163666 100644
--- a/Doc/api/exceptions.tex
+++ b/Doc/api/exceptions.tex
@@ -124,7 +124,7 @@
 \begin{cfuncdesc}{void}{PyErr_SetObject}{PyObject *type, PyObject *value}
   This function is similar to \cfunction{PyErr_SetString()} but lets
   you specify an arbitrary Python object for the ``value'' of the
-  exception.  One reference to \var{value} is stolen.
+  exception.
 \end{cfuncdesc}
 
 \begin{cfuncdesc}{PyObject*}{PyErr_Format}{PyObject *exception,