Author: zoltan
Date: 2007-04-26 15:26:09 -0400 (Thu, 26 Apr 2007)
New Revision: 76350

Modified:
   trunk/mono/mono/metadata/ChangeLog
   trunk/mono/mono/metadata/loader.c
Log:
2007-04-26  Zoltan Varga  <[EMAIL PROTECTED]>

        * loader.c (mono_loader_error_prepare_exception): Fix crash caused by 
calling
        mono_loader_clear_error () too late. Fixes #81463.


Modified: trunk/mono/mono/metadata/ChangeLog
===================================================================
--- trunk/mono/mono/metadata/ChangeLog  2007-04-26 18:29:45 UTC (rev 76349)
+++ trunk/mono/mono/metadata/ChangeLog  2007-04-26 19:26:09 UTC (rev 76350)
@@ -1,3 +1,8 @@
+2007-04-26  Zoltan Varga  <[EMAIL PROTECTED]>
+
+       * loader.c (mono_loader_error_prepare_exception): Fix crash caused by 
calling
+       mono_loader_clear_error () too late. Fixes #81463.
+
 2007-04-26  Atsushi Enomoto  <[EMAIL PROTECTED]>
 
        * culture-info-table.h : regenerated.

Modified: trunk/mono/mono/metadata/loader.c
===================================================================
--- trunk/mono/mono/metadata/loader.c   2007-04-26 18:29:45 UTC (rev 76349)
+++ trunk/mono/mono/metadata/loader.c   2007-04-26 19:26:09 UTC (rev 76350)
@@ -280,15 +280,18 @@
        
        case MONO_LOADER_ERROR_ASSEMBLY: {
                char *msg;
+               char *filename;
 
                if (error->ref_only)
                        msg = g_strdup_printf ("Cannot resolve dependency to 
assembly '%s' because it has not been preloaded. When using the ReflectionOnly 
APIs, dependent assemblies must be pre-loaded or loaded on demand through the 
ReflectionOnlyAssemblyResolve event.", error->assembly_name);
                else
                        msg = g_strdup_printf ("Could not load file or assembly 
'%s' or one of its dependencies.", error->assembly_name);
-
-               ex = mono_get_exception_file_not_found2 (msg, mono_string_new 
(mono_domain_get (), error->assembly_name));
+               filename = g_strdup (error->assembly_name);
+               /* Has to call this before calling anything which might call 
mono_class_init () */
                mono_loader_clear_error ();
+               ex = mono_get_exception_file_not_found2 (msg, mono_string_new 
(mono_domain_get (), filename));
                g_free (msg);
+               g_free (filename);
                break;
        }
        

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to