Py_TYPE() has already dereferenced self before the NULL check. Moved Py_TYPE() after the check for self == NULL
diff --git a/Objects/classobject.c b/Objects/classobject.c
index b7d35ef..f956852 100644
--- a/Objects/classobject.c
+++ b/Objects/classobject.c
@@ -218,7 +218,7 @@
 {
     PyObject *self = a->im_self;
     PyObject *func = a->im_func;
-    PyObject *klass = (PyObject*)Py_TYPE(self);
+    PyObject *klass;
     PyObject *funcname = NULL ,*klassname = NULL, *result = NULL;
     char *defname = "?";
 
@@ -226,6 +226,7 @@
         PyErr_BadInternalCall();
         return NULL;
     }
+    klass = (PyObject*)Py_TYPE(self);
 
     funcname = PyObject_GetAttrString(func, "__name__");
     if (funcname == NULL) {