diff --git a/py/objobject.c b/py/objobject.c
index 56daa956d401f01530bd053613df1edb0c2cfbb1..74a4926b3404ab02a6bb325be6eb128ee7c7d473 100644
--- a/py/objobject.c
+++ b/py/objobject.c
@@ -11,8 +11,6 @@ typedef struct _mp_obj_object_t {
     mp_obj_base_t base;
 } mp_obj_object_t;
 
-const mp_obj_type_t mp_type_object;
-
 STATIC mp_obj_t object_make_new(mp_obj_t type_in, uint n_args, uint n_kw, const mp_obj_t *args) {
     if (n_args != 0 || n_kw != 0) {
         nlr_raise(mp_obj_new_exception_msg(&mp_type_TypeError, "object takes no arguments"));
diff --git a/py/objtype.c b/py/objtype.c
index e8201ca07b4cd245d8cf25d21c9405115adafef9..92f1f570358842a12c134fb7db89e24569c350e1 100644
--- a/py/objtype.c
+++ b/py/objtype.c
@@ -532,7 +532,8 @@ STATIC mp_obj_t mp_obj_is_subclass(mp_obj_t object, mp_obj_t classinfo) {
     }
 
     for (uint i = 0; i < len; i++) {
-        if (mp_obj_is_subclass_fast(object, items[i])) {
+        // We explicitly check for 'object' here since no-one explicitly derives from it
+        if (items[i] == &mp_type_object || mp_obj_is_subclass_fast(object, items[i])) {
             return mp_const_true;
         }
     }