[Processes] Memory leak fix in EnumProcessModules function
authorBogdanovKirill <bogdanov@macroscop.com>
Wed, 28 Oct 2015 05:50:46 +0000 (10:50 +0500)
committerBogdanovKirill <bogdanov@macroscop.com>
Wed, 28 Oct 2015 11:15:08 +0000 (16:15 +0500)
The main point is that get_process_name_from_proc's result string is never released.

This change is released under the MIT license.

mono/io-layer/processes.c

index 94938f53704a8d4213ef0bd118ba658488cc124c..96e72675c6acfb4ee1ce40c83136c8b0a6d9da67 100644 (file)
@@ -1780,7 +1780,7 @@ gboolean EnumProcessModules (gpointer process, gpointer *modules,
                        return FALSE;
                }
                pid = process_handle->id;
-               proc_name = process_handle->proc_name;
+               proc_name = g_strdup (process_handle->proc_name);
        }
        
 #if defined(PLATFORM_MACOSX) || defined(__OpenBSD__) || defined(__FreeBSD__) || defined(__HAIKU__)
@@ -1798,6 +1798,7 @@ gboolean EnumProcessModules (gpointer process, gpointer *modules,
                 */
                modules[0] = NULL;
                *needed = sizeof(gpointer);
+               g_free (proc_name);
                return TRUE;
        }
        mods = load_modules (fp);
@@ -1831,7 +1832,8 @@ gboolean EnumProcessModules (gpointer process, gpointer *modules,
                free_procmodule (g_slist_nth_data (mods, i));
        }
        g_slist_free (mods);
-
+       g_free (proc_name);
+       
        return TRUE;
 }