@@ -65,6 +65,7 @@ static void CollectImageMetaData(MonoImage* image, gpointer value, CollectMetada
65
65
{
66
66
int i ;
67
67
MonoTableInfo * tdef = & image -> tables [MONO_TABLE_TYPEDEF ];
68
+ GSList * list ;
68
69
69
70
if (image -> dynamic )
70
71
{
@@ -84,6 +85,21 @@ static void CollectImageMetaData(MonoImage* image, gpointer value, CollectMetada
84
85
}
85
86
}
86
87
88
+ /* Some classes are only in this list.
89
+ They are added in reflection_setup_internal_class_internal.
90
+ */
91
+ list = image -> reflection_info_unregister_classes ;
92
+
93
+ while (list )
94
+ {
95
+ MonoClass * klass = (MonoClass * )list -> data ;
96
+
97
+ if (klass )
98
+ ContextInsertClass (context , klass );
99
+
100
+ list = list -> next ;
101
+ }
102
+
87
103
for (i = 1 ; i < tdef -> rows ; ++ i )
88
104
{
89
105
MonoClass * klass ;
@@ -586,8 +602,16 @@ static void VerifySnapshot(MonoManagedMemorySnapshot* snapshot, GHashTable* mono
586
602
587
603
static void CollectMonoImage (MonoImage * image , GHashTable * monoImages )
588
604
{
589
- if (g_hash_table_lookup (monoImages , image ) == NULL )
590
- g_hash_table_insert (monoImages , image , image );
605
+ if (g_hash_table_lookup (monoImages , image ) != NULL )
606
+ return ;
607
+
608
+ g_hash_table_insert (monoImages , image , image );
609
+
610
+ if (image -> assembly -> image != NULL &&
611
+ image != image -> assembly -> image )
612
+ {
613
+ CollectMonoImage (image -> assembly -> image , monoImages );
614
+ }
591
615
592
616
if (image -> module_count > 0 )
593
617
{
0 commit comments