Merge pull request #2781 from alexanderkyte/inflated_method_header_leak
[mono.git] / mono / metadata / mono-mlist.c
index a7543b50f851ec194734d38cd5c576bf9ad65d40..7e90b652dd5901714b31f60bfb95725fd85a8404 100644 (file)
@@ -10,6 +10,7 @@
 #include "mono/metadata/mono-mlist.h"
 #include "mono/metadata/appdomain.h"
 #include "mono/metadata/class-internals.h"
+#include "mono/metadata/object-internals.h"
 
 /* matches the System.MonoListItem object*/
 struct _MonoMList {
@@ -37,13 +38,15 @@ static MonoVTable *monolist_item_vtable = NULL;
 MonoMList*
 mono_mlist_alloc (MonoObject *data)
 {
+       MonoError error;
        MonoMList* res;
        if (!monolist_item_vtable) {
-               MonoClass *klass = mono_class_from_name (mono_defaults.corlib, "System", "MonoListItem");
+               MonoClass *klass = mono_class_load_from_name (mono_defaults.corlib, "System", "MonoListItem");
                monolist_item_vtable = mono_class_vtable (mono_get_root_domain (), klass);
                g_assert (monolist_item_vtable);
        }
-       res = (MonoMList*)mono_object_new_fast (monolist_item_vtable);
+       res = (MonoMList*)mono_object_new_fast_checked (monolist_item_vtable, &error);
+       mono_error_raise_exception (&error);
        MONO_OBJECT_SETREF (res, data, data);
        return res;
 }