]> rtime.felk.cvut.cz Git - sojka/lightdm.git/blobdiff - src/process.c
Fix memory leaks
[sojka/lightdm.git] / src / process.c
index 48811de13c3b12b44020de326aa481f5b5dfb4aa..4328dcd067df19b4a9b6364f6f649c5aebe87c03 100644 (file)
@@ -177,7 +177,7 @@ process_start (Process *process, gboolean block)
     gchar **argv;
     gchar **env_keys, **env_values;
     guint i, env_length;
-    GList *link;
+    GList *keys, *link;
     pid_t pid;
     int log_fd = -1;
     GError *error = NULL;
@@ -211,11 +211,13 @@ process_start (Process *process, gboolean block)
     env_length = g_hash_table_size (process->priv->env);
     env_keys = g_malloc (sizeof (gchar *) * env_length);
     env_values = g_malloc (sizeof (gchar *) * env_length);
-    for (i = 0, link = g_hash_table_get_keys (process->priv->env); i < env_length; i++, link = link->next)
+    keys = g_hash_table_get_keys (process->priv->env);
+    for (i = 0, link = keys; i < env_length; i++, link = link->next)
     {
         env_keys[i] = link->data;
         env_values[i] = g_hash_table_lookup (process->priv->env, env_keys[i]);
     }
+    g_list_free (keys);
 
     pid = fork ();
     if (pid == 0)