2009-06-14 Zoltan Varga <vargaz@gmail.com>
authorZoltan Varga <vargaz@gmail.com>
Sun, 14 Jun 2009 11:42:12 +0000 (11:42 -0000)
committerZoltan Varga <vargaz@gmail.com>
Sun, 14 Jun 2009 11:42:12 +0000 (11:42 -0000)
* class.c (mono_class_from_name): Fix support for assembly references
in the EXPORTEDTYPE table. Fixes #511704.

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

mono/metadata/ChangeLog
mono/metadata/class.c

index 08ff54dbea4d2dc4830889f492555707e7149575..1f24848761213896e6eef138dba25de2e5b53361 100644 (file)
@@ -1,3 +1,8 @@
+2009-06-14  Zoltan Varga  <vargaz@gmail.com>
+
+       * class.c (mono_class_from_name): Fix support for assembly references
+       in the EXPORTEDTYPE table. Fixes #511704.
+
 2009-06-13  Geoff Norton  <gnorton@novell.com>
 
        * domain.c: Ensure that mono_domain_assembly_open actually opens the
index 2c56a9e0d83695758aa60b90aec213bc5f4c04ba..558d68da944d04de456d9df0542c33b4e94b23e4 100644 (file)
@@ -5870,20 +5870,17 @@ mono_class_from_name (MonoImage *image, const char* name_space, const char *name
                                return return_nested_in (class, nested);
                        return class;
                } else if ((impl & MONO_IMPLEMENTATION_MASK) == MONO_IMPLEMENTATION_ASSEMBLYREF) {
-                       MonoAssembly **references = image->references;
                        guint32 assembly_idx;
 
                        assembly_idx = impl >> MONO_IMPLEMENTATION_BITS;
 
-                       if (!references [assembly_idx - 1])
-                               mono_assembly_load_reference (image, assembly_idx - 1);
-                       g_assert (references == image->references);
-                       g_assert (references [assembly_idx - 1]);
-                       if (references [assembly_idx - 1] == (gpointer)-1)
+                       mono_assembly_load_reference (image, assembly_idx - 1);
+                       g_assert (image->references [assembly_idx - 1]);
+                       if (image->references [assembly_idx - 1] == (gpointer)-1)
                                return NULL;                    
                        else
                                /* FIXME: Cycle detection */
-                               return mono_class_from_name (references [assembly_idx - 1]->image, name_space, name);
+                               return mono_class_from_name (image->references [assembly_idx - 1]->image, name_space, name);
                } else {
                        g_error ("not yet implemented");
                }