From: Miguel de Icaza Date: Sat, 27 May 2006 17:09:22 +0000 (-0000) Subject: 2006-05-27 Miguel de Icaza X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=commitdiff_plain;h=87076a48fb53f00f43f26b6c72fa9daddd30a55b;p=mono.git 2006-05-27 Miguel de Icaza * class.c (mono_class_from_typeref): handle missing images earlier, deals with bug #78418. Refactor code; Fix a warning introduced in my previous commit (some stale code from before I revisited my patch). svn path=/trunk/mono/; revision=61193 --- diff --git a/mono/metadata/ChangeLog b/mono/metadata/ChangeLog index 1fe5a848290..83a1be10225 100644 --- a/mono/metadata/ChangeLog +++ b/mono/metadata/ChangeLog @@ -1,5 +1,11 @@ 2006-05-27 Miguel de Icaza + * class.c (mono_class_from_typeref): handle missing images + earlier, deals with bug #78418. Refactor code; + + Fix a warning introduced in my previous commit (some stale code + from before I revisited my patch). + * class.c (mono_class_create_from_typedef): On failure, remove the class from the MonoImage->class_cache as the class is not initialized; Fixes the leak pointed out by Paolo. diff --git a/mono/metadata/class.c b/mono/metadata/class.c index a1f2ef9ebac..445d78a101b 100644 --- a/mono/metadata/class.c +++ b/mono/metadata/class.c @@ -75,7 +75,19 @@ mono_class_from_typeref (MonoImage *image, guint32 type_token) /* a typedef in disguise */ return mono_class_from_name (image, nspace, name); case MONO_RESOLTION_SCOPE_MODULEREF: - return mono_class_from_name (image->modules [idx - 1], nspace, name); + if (image->modules [idx-1]) + return mono_class_from_name (image->modules [idx - 1], nspace, name); + else { + char *msg = g_strdup_printf ("%s%s%s", nspace, nspace [0] ? "." : "", name); + char *human_name; + + human_name = mono_stringify_assembly_name (&image->assembly->aname); + mono_loader_set_error_type_load (msg, human_name); + g_free (msg); + g_free (human_name); + + return NULL; + } case MONO_RESOLTION_SCOPE_TYPEREF: { MonoClass *enclosing = mono_class_from_typeref (image, MONO_TOKEN_TYPE_REF | idx); GList *tmp; @@ -1773,7 +1785,7 @@ mono_class_setup_vtable (MonoClass *class) mono_loader_unlock (); - return ok; + return; } /*