2009-08-17 Rodrigo Kumpera <rkumpera@novell.com>
authorRodrigo Kumpera <kumpera@gmail.com>
Mon, 17 Aug 2009 21:35:56 +0000 (21:35 -0000)
committerRodrigo Kumpera <kumpera@gmail.com>
Mon, 17 Aug 2009 21:35:56 +0000 (21:35 -0000)
* loader.c (mono_loader_set_error_bad_image): Improve
error messages.

svn path=/trunk/mono/; revision=140106

mono/metadata/ChangeLog
mono/metadata/loader.c

index 2a477e2b0675ab05716b4944a092a790bd23bd16..89121c69217ed33e5675592ac731b813dda95acb 100644 (file)
@@ -1,3 +1,13 @@
+2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * loader.c (mono_loader_set_error_bad_image): Improve
+       error messages.
+
+2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * loader.c (mono_get_method_full): Convert an assertion
+       into a loader error.
+
 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
 
        * class-internals.h, class.c: Better naming and documentation.
index c75c956a60f4824f6477014eecdf52b0cf328f5d..d4050735c037cc6fccfe9dce088cd3ba5beca082 100644 (file)
@@ -1455,7 +1455,7 @@ mono_get_method_from_token (MonoImage *image, guint32 token, MonoClass *klass,
                result = mono_lookup_dynamic_token_class (image, token, TRUE, &handle_class, context);
                // This checks the memberref type as well
                if (result && handle_class != mono_defaults.methodhandle_class) {
-                       mono_loader_set_error_bad_image (g_strdup ("Bad method token."));
+                       mono_loader_set_error_bad_image (g_strdup_printf ("Bad method token 0x%08x on image %s.", token, image->name));
                        return NULL;
                }
                return result;
@@ -1466,16 +1466,18 @@ mono_get_method_from_token (MonoImage *image, guint32 token, MonoClass *klass,
                        if (used_context) *used_context = TRUE;
                        return method_from_methodspec (image, context, idx);
                }
-               if (table != MONO_TABLE_MEMBERREF)
-                       g_print("got wrong token: 0x%08x\n", token);
-               g_assert (table == MONO_TABLE_MEMBERREF);
+               if (table != MONO_TABLE_MEMBERREF) {
+                       g_warning ("got wrong token: 0x%08x\n", token);
+                       mono_loader_set_error_bad_image (g_strdup_printf ("Bad method token 0x%08x on image %s.", token, image->name));
+                       return NULL;
+               }
                return method_from_memberref (image, idx, context, used_context);
        }
 
        if (used_context) *used_context = FALSE;
 
        if (idx > image->tables [MONO_TABLE_METHOD].rows) {
-               mono_loader_set_error_bad_image (g_strdup ("Bad method token."));
+               mono_loader_set_error_bad_image (g_strdup_printf ("Bad method token 0x%08x on image %s.", token, image->name));
                return NULL;
        }