diff --git a/src/runtime/objmodel.cpp b/src/runtime/objmodel.cpp
index 286a72e7223aabd5abae5db457fe89752436edb8..ec3a6c79658e5f743a67f3e789fc430b1fa6e24c 100644
--- a/src/runtime/objmodel.cpp
+++ b/src/runtime/objmodel.cpp
@@ -563,9 +563,13 @@ static Box* _handleClsAttr(Box* obj, Box* attr) {
     if (attr->cls == member_cls) {
         BoxedMemberDescriptor* member_desc = static_cast<BoxedMemberDescriptor*>(attr);
         switch (member_desc->type) {
-            case BoxedMemberDescriptor::OBJECT:
+            case BoxedMemberDescriptor::OBJECT: {
                 assert(member_desc->offset % sizeof(Box*) == 0);
-                return reinterpret_cast<Box**>(obj)[member_desc->offset / sizeof(Box*)];
+                Box* rtn = reinterpret_cast<Box**>(obj)[member_desc->offset / sizeof(Box*)];
+                // be careful about returning NULLs; I'm not sure what the correct behavior is here:
+                RELEASE_ASSERT(rtn, "");
+                return rtn;
+            }
             default:
                 RELEASE_ASSERT(0, "%d", member_desc->type);
         }