X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fmetadata%2Fclass.c;h=0d0952b0c9ff467bb054e8eec296a6571915db12;hb=d2a6ce3a93e6a54b7835262609580c4acc034fa9;hp=973bfc4ce6431d74176165c4c3e5d0d2a27594ae;hpb=4d7109cceb3d5d5f7abdea9448a7f71abd60c825;p=mono.git diff --git a/mono/metadata/class.c b/mono/metadata/class.c index 973bfc4ce64..0d0952b0c9f 100644 --- a/mono/metadata/class.c +++ b/mono/metadata/class.c @@ -5418,6 +5418,12 @@ mono_class_setup_supertypes (MonoClass *klass) mono_loader_unlock (); } +static gboolean +discard_gclass_due_to_failure (MonoClass *gclass, void *user_data) +{ + return mono_class_get_generic_class (gclass)->container_class == user_data; +} + static gboolean fix_gclass_incomplete_instantiation (MonoClass *gclass, void *user_data) { @@ -5711,6 +5717,9 @@ mono_class_create_from_typedef (MonoImage *image, guint32 type_token, MonoError return klass; parent_failure: + if (mono_class_is_gtd (klass)) + disable_gclass_recording (discard_gclass_due_to_failure, klass); + mono_class_setup_mono_type (klass); mono_loader_unlock (); mono_profiler_class_loaded (klass, MONO_PROFILE_FAILED);