bpo-33018: Improve issubclass() error checking and message. (GH-5944)


This improves error message for situations when a non-class is
checked w.r.t. an abstract base class.
(cherry picked from commit 40472dd42de4f7265d456458cd13ad6894d736db)

Co-authored-by: jab <jab@users.noreply.github.com>
diff --git a/Modules/_abc.c b/Modules/_abc.c
index 8628839..7daa18e 100644
--- a/Modules/_abc.c
+++ b/Modules/_abc.c
@@ -569,6 +569,11 @@
                              PyObject *subclass)
 /*[clinic end generated code: output=b56c9e4a530e3894 input=1d947243409d10b8]*/
 {
+    if (!PyType_Check(subclass)) {
+        PyErr_SetString(PyExc_TypeError, "issubclass() arg 1 must be a class");
+        return NULL;
+    }
+
     PyObject *ok, *mro = NULL, *subclasses = NULL, *result = NULL;
     Py_ssize_t pos;
     int incache;