[runtime] Handle mono_method_body_get_object returning NULL on success.
authorRodrigo Kumpera <kumpera@gmail.com>
Mon, 29 May 2017 17:36:54 +0000 (10:36 -0700)
committerRodrigo Kumpera <kumpera@gmail.com>
Mon, 29 May 2017 17:36:54 +0000 (10:36 -0700)
mono/metadata/reflection-cache.h
mono/metadata/reflection.c

index 8ba661c7ac8e9ed0f7c3255c3ceb830a79108ee1..594556fb68a13421102fcc88566cb0dbc62c634d 100644 (file)
@@ -118,6 +118,8 @@ check_or_construct_handle (MonoDomain *domain, MonoClass *klass, gpointer item,
                return obj;
        MONO_HANDLE_ASSIGN (obj, construct (domain, klass, item, user_data, error));
        return_val_if_nok (error, NULL);
+       if (MONO_HANDLE_IS_NULL (obj))
+               return obj;
        /* note no caching if there was an error in construction */
        return cache_object_handle (domain, klass, item, obj);
 }
index f7d912d47c80dfac2ef03a35436bcee57fc4e290..ee9681e1d27dce1033d9bcbe6b2867327c2f3801 100644 (file)
@@ -1210,6 +1210,7 @@ mono_method_body_get_object (MonoDomain *domain, MonoMethod *method)
        HANDLE_FUNCTION_RETURN_OBJ (result);
 }
 
+/* WARNING: This method can return NULL on sucess */
 static MonoReflectionMethodBodyHandle
 method_body_object_construct (MonoDomain *domain, MonoClass *unused_class, MonoMethod *method, gpointer user_data, MonoError *error)
 {