summaryrefslogtreecommitdiffstats
path: root/Python
diff options
context:
space:
mode:
Diffstat (limited to 'Python')
-rw-r--r--Python/bltinmodule.c25
1 files changed, 15 insertions, 10 deletions
diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c
index f2839ac..4019559 100644
--- a/Python/bltinmodule.c
+++ b/Python/bltinmodule.c
@@ -1627,18 +1627,23 @@ builtin_isinstance(self, args)
if (!PyArg_ParseTuple(args, "OO", &inst, &cls))
return NULL;
- if (!PyClass_Check(cls)) {
- PyErr_SetString(PyExc_TypeError,
- "second argument must be a class");
- return NULL;
+ if (PyType_Check(cls)) {
+ retval = (inst->ob_type == cls);
}
-
- if (!PyInstance_Check(inst))
- retval = 0;
else {
- PyObject *inclass =
- (PyObject*)((PyInstanceObject*)inst)->in_class;
- retval = PyClass_IsSubclass(inclass, cls);
+ if (!PyClass_Check(cls)) {
+ PyErr_SetString(PyExc_TypeError,
+ "second argument must be a class");
+ return NULL;
+ }
+
+ if (!PyInstance_Check(inst))
+ retval = 0;
+ else {
+ PyObject *inclass =
+ (PyObject*)((PyInstanceObject*)inst)->in_class;
+ retval = PyClass_IsSubclass(inclass, cls);
+ }
}
return PyInt_FromLong(retval);
}