I don't know why staring at the email to python-checkins made me
see problems with my code that I didn't see before the checkin, but:

When a subtype .mro() fails, we need to reset the type whose __bases__
are being changed, too.  Fix + test.
diff --git a/Lib/test/test_descr.py b/Lib/test/test_descr.py
index 19a0ae4..99eecd3 100644
--- a/Lib/test/test_descr.py
+++ b/Lib/test/test_descr.py
@@ -3566,11 +3566,13 @@
     # check here that E's gets restored.
     
     E_mro_before = E.__mro__
+    D_mro_before = D.__mro__
 
     try:
         D.__bases__ = (C2,)
     except RuntimeError:
         vereq(E.__mro__, E_mro_before)
+        vereq(D.__mro__, D_mro_before)
     else:
         raise TestFailed, "exception not propagated"