Tighten the tests for assignment to __bases__: disallow empty tuple.
diff --git a/Lib/test/test_descr.py b/Lib/test/test_descr.py
index ed4593e..5a1fcec 100644
--- a/Lib/test/test_descr.py
+++ b/Lib/test/test_descr.py
@@ -3486,6 +3486,14 @@
         raise TestFailed, "shouldn't be able to delete .__bases__"
 
     try:
+        D.__bases__ = ()
+    except TypeError, msg:
+        if str(msg) == "a new-style class can't have only classic bases":
+            raise TestFailed, "wrong error message for .__bases__ = ()"
+    else:
+        raise TestFailed, "shouldn't be able to set .__bases__ to ()"
+
+    try:
         D.__bases__ = (D,)
     except TypeError:
         pass
diff --git a/Objects/typeobject.c b/Objects/typeobject.c
index 193b0cc..a9c229a 100644
--- a/Objects/typeobject.c
+++ b/Objects/typeobject.c
@@ -211,6 +211,12 @@
 			     type->tp_name, value->ob_type->tp_name);
 		return -1;
 	}
+	if (PyTuple_GET_SIZE(value) == 0) {
+		PyErr_Format(PyExc_TypeError,
+		     "can only assign non-empty tuple to %s.__bases__, not ()",
+			     type->tp_name);
+		return -1;
+	}
 	for (i = 0; i < PyTuple_GET_SIZE(value); i++) {
 		ob = PyTuple_GET_ITEM(value, i);
 		if (!PyClass_Check(ob) && !PyType_Check(ob)) {