(Merge into trunk.)
Fix for SF bug #492345. (I could've sworn I checked this in, but
apparently I didn't!)
This code:
class Classic:
pass
class New(Classic):
__metaclass__ = type
attempts to create a new-style class with only classic bases -- but it
doesn't work right. Attempts to fix it so it works caused problems
elsewhere, so I'm now raising a TypeError in this case.
diff --git a/Objects/typeobject.c b/Objects/typeobject.c
index 6243e81..ba30063 100644
--- a/Objects/typeobject.c
+++ b/Objects/typeobject.c
@@ -757,7 +757,9 @@
return NULL;
}
}
- assert(base != NULL);
+ if (base == NULL)
+ PyErr_SetString(PyExc_TypeError,
+ "a new-style class can't have only classic bases");
return base;
}