PyObject_IsInstance(PyObject *inst, PyObject *cls)
{
static PyObject *name = NULL;
- PyObject *t, *v, *tb;
PyObject *checker;
/* Quick test for an exact match */
if (Py_TYPE(inst) == (PyTypeObject *)cls)
return 1;
- PyErr_Fetch(&t, &v, &tb);
-
if (name == NULL) {
name = PyString_InternFromString("__instancecheck__");
if (name == NULL)
return -1;
}
checker = PyObject_GetAttr(cls, name);
- PyErr_Restore(t, v, tb);
+ if (checker == NULL && PyErr_Occurred())
+ PyErr_Clear();
if (checker != NULL) {
PyObject *res;
int ok = -1;