#include <mono/metadata/monitor.h>
#include <mono/metadata/threadpool.h>
#include <mono/utils/mono-uri.h>
+#include <mono/utils/mono-logger.h>
-#define MONO_CORLIB_VERSION 44
+#define MONO_CORLIB_VERSION 53
CRITICAL_SECTION mono_delegate_section;
/* This ends up calling any pending pending (for at most 2 seconds) */
mono_gc_cleanup ();
+ mono_thread_cleanup ();
+
mono_network_cleanup ();
+
+ mono_marshal_cleanup ();
}
static MonoDomainFunc quit_function = NULL;
MonoObject *
ves_icall_System_AppDomain_GetData (MonoAppDomain *ad, MonoString *name)
{
- MonoDomain *add = ad->data;
+ MonoDomain *add;
MonoObject *o;
char *str;
MONO_ARCH_SAVE_REGS;
g_assert (ad != NULL);
+ add = ad->data;
+ g_assert (add != NULL);
if (name == NULL)
mono_raise_exception (mono_get_exception_argument_null ("name"));
void
ves_icall_System_AppDomain_SetData (MonoAppDomain *ad, MonoString *name, MonoObject *data)
{
- MonoDomain *add = ad->data;
+ MonoDomain *add;
MONO_ARCH_SAVE_REGS;
g_assert (ad != NULL);
+ add = ad->data;
+ g_assert (add != NULL);
if (name == NULL)
mono_raise_exception (mono_get_exception_argument_null ("name"));
if (!setup->application_base) {
/* Inherit from the root domain since MS.NET does this */
MonoDomain *root = mono_get_root_domain ();
- setup->application_base = mono_string_new_utf16 (data, mono_string_chars (root->setup->application_base), mono_string_length (root->setup->application_base));
+ if (root->setup->application_base)
+ MONO_OBJECT_SETREF (setup, application_base, mono_string_new_utf16 (data, mono_string_chars (root->setup->application_base), mono_string_length (root->setup->application_base)));
}
mono_context_init (data);
continue;
if (ass->corlib_internal)
continue;
- mono_array_set (res, gpointer, i, mono_assembly_get_object (domain, ass));
+ mono_array_setref (res, i, mono_assembly_get_object (domain, ass));
++i;
}
mono_domain_assemblies_unlock (domain);
mono_assembly_addref (ass);
g_hash_table_insert (ht, ass, ass);
domain->domain_assemblies = g_slist_prepend (domain->domain_assemblies, ass);
+ mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_ASSEMBLY, "Assembly %s %p added to domain %s, ref_count=%d\n", ass->aname.name, ass, domain->friendly_name, ass->ref_count);
}
if (ass->image->references) {
ass = mono_assembly_open_full (filename, &status, refOnly);
- g_free (name);
-
if (!ass){
- MonoException *exc = mono_get_exception_file_not_found (fname);
+ MonoException *exc;
+
+ if (status == MONO_IMAGE_IMAGE_INVALID)
+ exc = mono_get_exception_bad_image_format (name);
+ else
+ exc = mono_get_exception_file_not_found (fname);
+ g_free (name);
mono_raise_exception (exc);
}
+ g_free (name);
+
return mono_assembly_get_object (domain, ass);
}
}
refass = mono_assembly_get_object (domain, ass);
- refass->evidence = evidence;
+ MONO_OBJECT_SETREF (refass, evidence, evidence);
return refass;
}
if (refass == NULL)
refass = mono_assembly_get_object (domain, ass);
- refass->evidence = evidence;
+ MONO_OBJECT_SETREF (refass, evidence, evidence);
return refass;
}
args = (MonoArray *) mono_array_new (ad->data, mono_defaults.string_class, 0);
refass = mono_assembly_get_object (ad->data, assembly);
- refass->evidence = evidence;
+ MONO_OBJECT_SETREF (refass, evidence, evidence);
res = mono_runtime_exec_main (method, (MonoArray *)args, NULL);