Include a test case that failed for one of my efforts to repair this.
# actually, we'll have crashed by here...
raise TestFailed, "shouldn't be able to create inheritance cycles"
+ try:
+ D.__bases__ = (C, C)
+ except TypeError:
+ pass
+ else:
+ raise TestFailed, "didn't detect repeated base classes"
+
try:
D.__bases__ = (E,)
except TypeError:
return r;
bail:
+ Py_DECREF(type->tp_bases);
+ Py_DECREF(type->tp_base);
+ if (type->tp_mro != old_mro) {
+ Py_DECREF(type->tp_mro);
+ }
+
type->tp_bases = old_bases;
type->tp_base = old_base;
type->tp_mro = old_mro;
- Py_DECREF(value);
- Py_DECREF(new_base);
-
return -1;
}