Don't leak memory here.
authorMatthias Clasen <mclasen@redhat.com>
Thu, 23 Jun 2005 16:28:55 +0000 (16:28 +0000)
committerMatthias Clasen <matthiasc@src.gnome.org>
Thu, 23 Jun 2005 16:28:55 +0000 (16:28 +0000)
2005-06-23  Matthias Clasen  <mclasen@redhat.com>

* tests/keyfile-test.c (test_group_remove): Don't leak
memory here.

* glib/gkeyfile.c (g_key_file_load_from_data_dirs): Don't
leak output_path.  (#308546, Kjartan Maraas)

ChangeLog
ChangeLog.pre-2-10
ChangeLog.pre-2-12
ChangeLog.pre-2-8
glib/gkeyfile.c
tests/keyfile-test.c

index a39a239..920ca63 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 2005-06-23  Matthias Clasen  <mclasen@redhat.com>
 
+       * tests/keyfile-test.c (test_group_remove): Don't leak
+       memory here.
+
        * glib/gkeyfile.c (g_key_file_load_from_data_dirs): Don't
        leak output_path.  (#308546, Kjartan Maraas)
 
index a39a239..920ca63 100644 (file)
@@ -1,5 +1,8 @@
 2005-06-23  Matthias Clasen  <mclasen@redhat.com>
 
+       * tests/keyfile-test.c (test_group_remove): Don't leak
+       memory here.
+
        * glib/gkeyfile.c (g_key_file_load_from_data_dirs): Don't
        leak output_path.  (#308546, Kjartan Maraas)
 
index a39a239..920ca63 100644 (file)
@@ -1,5 +1,8 @@
 2005-06-23  Matthias Clasen  <mclasen@redhat.com>
 
+       * tests/keyfile-test.c (test_group_remove): Don't leak
+       memory here.
+
        * glib/gkeyfile.c (g_key_file_load_from_data_dirs): Don't
        leak output_path.  (#308546, Kjartan Maraas)
 
index a39a239..920ca63 100644 (file)
@@ -1,5 +1,8 @@
 2005-06-23  Matthias Clasen  <mclasen@redhat.com>
 
+       * tests/keyfile-test.c (test_group_remove): Don't leak
+       memory here.
+
        * glib/gkeyfile.c (g_key_file_load_from_data_dirs): Don't
        leak output_path.  (#308546, Kjartan Maraas)
 
index 485c862..0c80dfe 100644 (file)
@@ -587,8 +587,11 @@ g_key_file_load_from_data_dirs (GKeyFile       *key_file,
 
   found_file = FALSE;
   data_dirs = all_data_dirs;
+  output_path = NULL;
   while (*data_dirs != NULL && !found_file)
     {
+      g_free (output_path);
+
       fd = find_file_in_data_dirs (file, &output_path, &data_dirs, 
                                    &key_file_error);
       
@@ -596,7 +599,7 @@ g_key_file_load_from_data_dirs (GKeyFile       *key_file,
         {
           if (key_file_error)
             g_propagate_error (error, key_file_error);
-         break;
+         break;
         }
 
       found_file = g_key_file_load_from_fd (key_file, fd, flags,
@@ -606,16 +609,15 @@ g_key_file_load_from_data_dirs (GKeyFile       *key_file,
       if (key_file_error)
         {
          g_propagate_error (error, key_file_error);
-          g_free (output_path);
          break;
         }
-      
-      if (full_path)
-       *full_path = output_path;
-      else
-       g_free (output_path);
     }
 
+  if (found_file && full_path)
+    *full_path = output_path;
+  else 
+    g_free (output_path);
+
   g_strfreev (all_data_dirs);
 
   return found_file;
index 6680648..1df71d3 100644 (file)
@@ -708,6 +708,8 @@ test_group_remove (void)
   g_key_file_remove_group (keyfile, "group1", &error);
   check_no_error (&error);
   
+  g_strfreev (names);
+
   names = g_key_file_get_groups (keyfile, &len);
   if (names == NULL)
     {
@@ -722,6 +724,8 @@ test_group_remove (void)
   g_key_file_remove_group (keyfile, "group2", &error);
   check_no_error (&error);
   
+  g_strfreev (names);
+
   names = g_key_file_get_groups (keyfile, &len);
   if (names == NULL)
     {
@@ -735,6 +739,8 @@ test_group_remove (void)
   g_key_file_remove_group (keyfile, "no such group", &error);
   check_error (&error, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_GROUP_NOT_FOUND);
 
+  g_strfreev (names);
+
   g_key_file_free (keyfile);
 }