From a2d76503b1c9c6d038a594edeea205d0ef5b8441 Mon Sep 17 00:00:00 2001 From: Marius Ungureanu Date: Thu, 24 Nov 2016 17:17:12 +0200 Subject: [PATCH] [Perf] Free process in-place in loop on modules iterations. --- mono/metadata/w32process-unix.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/mono/metadata/w32process-unix.c b/mono/metadata/w32process-unix.c index 444759449ee..e3d6a859f4f 100644 --- a/mono/metadata/w32process-unix.c +++ b/mono/metadata/w32process-unix.c @@ -778,6 +778,7 @@ mono_w32process_try_get_modules (gpointer process, gpointer *modules, guint32 si else modules[i + 1] = module->address_start; } + mono_w32process_module_free ((MonoW32ProcessModule *)mods_iter->data); mods_iter = g_slist_next (mods_iter); count++; } @@ -785,9 +786,6 @@ mono_w32process_try_get_modules (gpointer process, gpointer *modules, guint32 si /* count + 1 to leave slot 0 for the main module */ *needed = sizeof(gpointer) * (count + 1); - for (mods_iter = mods; mods_iter; mods_iter = g_slist_next (mods_iter)) { - mono_w32process_module_free ((MonoW32ProcessModule *)mods_iter->data); - } g_slist_free (mods); g_free (proc_name); -- 2.25.1