Merge from HEAD.
authorZoltan Varga <vargaz@gmail.com>
Wed, 15 Sep 2004 21:03:11 +0000 (21:03 -0000)
committerZoltan Varga <vargaz@gmail.com>
Wed, 15 Sep 2004 21:03:11 +0000 (21:03 -0000)
svn path=/branches/mono-1-0/mono/; revision=33948

mono/metadata/ChangeLog
mono/metadata/appdomain.c

index 0195d4402b49bce34aacd7f2b71c50d2731972d8..bbb461c39ef264d6b0901ffe88839fd703e46c6b 100644 (file)
@@ -1,3 +1,8 @@
+2004-09-16  Zoltan Varga  <vargaz@freemail.hu>
+
+       * appdomain.c (ves_icall_System_AppDomain_createDomain): Load all
+       assemblies from the parent. Fixes #65665.
+
 2004-09-14  Lluis Sanchez Gual  <lluis@novell.com>
  
        * object.c: Added a "done" flag to TypeInitializationLock. This avoids
index af00a3510d2ce84f5808dc2607a0b9509b5d5456..688265a1eec83f3c127e66e9dff6aeda2d058f53 100644 (file)
@@ -44,6 +44,9 @@ mono_domain_assembly_preload (MonoAssemblyName *aname,
 static void
 mono_domain_fire_assembly_load (MonoAssembly *assembly, gpointer user_data);
 
+static void
+add_assemblies_to_domain (MonoDomain *domain, MonoAssembly *ass);
+
 static MonoMethod *
 look_for_method_by_name (MonoClass *klass, const gchar *name);
 
@@ -357,10 +360,16 @@ ves_icall_System_AppDomain_getCurDomain ()
        return add->domain;
 }
 
+static void
+add_assembly_to_domain (gpointer key, gpointer value, gpointer user_data)
+{
+       add_assemblies_to_domain ((MonoDomain*)user_data, (MonoAssembly*)value);
+}
+
 MonoAppDomain *
 ves_icall_System_AppDomain_createDomain (MonoString *friendly_name, MonoAppDomainSetup *setup)
 {
-       /*MonoDomain *domain = mono_domain_get (); */
+       MonoDomain *domain = mono_domain_get ();
        MonoClass *adclass;
        MonoAppDomain *ad;
        MonoDomain *data;
@@ -381,7 +390,10 @@ ves_icall_System_AppDomain_createDomain (MonoString *friendly_name, MonoAppDomai
 
        mono_context_init (data);
 
-       /* FIXME: what to do next ? */
+       /* The new appdomain should have all assemblies loaded */
+       mono_domain_lock (domain);
+       g_hash_table_foreach (domain->assemblies, add_assembly_to_domain, data);
+       mono_domain_unlock (domain);
 
        return ad;
 }