using super() for an instance in a metaclass situation. Because the
class was a metaclass, the instance was a class, and hence the
PyType_Check() branch was taken. But this branch didn't apply. Make
it so that if this branch doesn't apply, the other branch is still
tried. All tests pass.
This will allow using super() with a proxy for obj.
*/
- if (PyType_Check(obj)) {
- /* It's a new-style class */
- if (PyType_IsSubtype((PyTypeObject *)obj, type)) {
- Py_INCREF(obj);
- return (PyTypeObject *)obj;
- }
- else
- goto fail;
+ /* Check for first bullet above (special case) */
+ if (PyType_Check(obj) && PyType_IsSubtype((PyTypeObject *)obj, type)) {
+ Py_INCREF(obj);
+ return (PyTypeObject *)obj;
}
- else if (PyType_IsSubtype(obj->ob_type, type)) {
+
+ /* Normal case */
+ if (PyType_IsSubtype(obj->ob_type, type)) {
Py_INCREF(obj->ob_type);
return obj->ob_type;
}