Better implementation of PyCObject_AsVoidPtr().
diff --git a/Objects/cobject.c b/Objects/cobject.c
index 24b860e..4016b91 100644
--- a/Objects/cobject.c
+++ b/Objects/cobject.c
@@ -57,13 +57,6 @@
 	return (PyObject *)self;
 }
 
-void *
-PyCObject_AsVoidPtr(self)
-	PyObject *self;
-{
-        return ((PyCObject *)self)->cobject;
-}
-
 static void
 PyCObject_dealloc(self)
 	PyCObject *self;
@@ -105,3 +98,21 @@
 	0L,0L,0L,0L,
 	PyCObject_Type__doc__ /* Documentation string */
 };
+
+void *
+PyCObject_AsVoidPtr(self)
+	PyObject *self;
+{
+        if(self)
+	  {
+	    if(self->ob_type == &PyCObject_Type)
+	      return ((PyCObject *)self)->cobject;
+	    PyErr_SetString(PyExc_TypeError,
+			    "PyCObject_AsVoidPtr with non-C-object");
+	  }
+	if(! PyErr_Occurred())
+	    PyErr_SetString(
+               PyExc_TypeError,
+	       "PyCObject_AsVoidPtr called with null pointer");
+	return NULL;
+}