MonoNativeTlsKey loader_lock_nest_id;
static void dllmap_cleanup (void);
+static void cached_module_cleanup(void);
static void
global_loader_data_lock (void)
mono_loader_cleanup (void)
{
dllmap_cleanup ();
+ cached_module_cleanup ();
mono_native_tls_free (loader_lock_nest_id);
g_hash_table_insert (global_module_map, g_strdup (name), module);
}
+static void
+remove_cached_module(gpointer key, gpointer value, gpointer user_data)
+{
+ mono_dl_close((MonoDl*)value);
+}
+
+static void
+cached_module_cleanup(void)
+{
+ g_hash_table_foreach(global_module_map, remove_cached_module, NULL);
+
+ g_hash_table_destroy(global_module_map);
+ global_module_map = NULL;
+}
+
static MonoDl *internal_module;
static gboolean