- A type can now inherit its metatype from its base type.  Previously,
  when PyType_Ready() was called, if ob_type was found to be NULL, it
  was always set to &PyType_Type; now it is set to base->ob_type,
  where base is tp_base, defaulting to &PyObject_Type.

- PyType_Ready() accidentally did not inherit tp_is_gc; now it does.

Bugfix candidate.
diff --git a/Objects/typeobject.c b/Objects/typeobject.c
index 51ed430..fff95b4 100644
--- a/Objects/typeobject.c
+++ b/Objects/typeobject.c
@@ -2050,17 +2050,17 @@
 
 	type->tp_flags |= Py_TPFLAGS_READYING;
 
-	/* Initialize ob_type if NULL.  This means extensions that want to be
-	   compilable separately on Windows can call PyType_Ready() instead of
-	   initializing the ob_type field of their type objects. */
-	if (type->ob_type == NULL)
-		type->ob_type = &PyType_Type;
-
 	/* Initialize tp_base (defaults to BaseObject unless that's us) */
 	base = type->tp_base;
 	if (base == NULL && type != &PyBaseObject_Type)
 		base = type->tp_base = &PyBaseObject_Type;
 
+	/* Initialize ob_type if NULL.  This means extensions that want to be
+	   compilable separately on Windows can call PyType_Ready() instead of
+	   initializing the ob_type field of their type objects. */
+	if (type->ob_type == NULL)
+		type->ob_type = base->ob_type;
+
 	/* Initialize tp_bases */
 	bases = type->tp_bases;
 	if (bases == NULL) {