From: Matthias Clasen Date: Thu, 23 Jun 2005 16:28:55 +0000 (+0000) Subject: Don't leak memory here. X-Git-Tag: GLIB_2_7_1~17 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=58f83683e9ccd9e9e0781105ed1e676f7c2241e0;p=platform%2Fupstream%2Fglib.git Don't leak memory here. 2005-06-23 Matthias Clasen * 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) --- diff --git a/ChangeLog b/ChangeLog index a39a239..920ca63 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2005-06-23 Matthias Clasen + * 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) diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index a39a239..920ca63 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,5 +1,8 @@ 2005-06-23 Matthias Clasen + * 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) diff --git a/ChangeLog.pre-2-12 b/ChangeLog.pre-2-12 index a39a239..920ca63 100644 --- a/ChangeLog.pre-2-12 +++ b/ChangeLog.pre-2-12 @@ -1,5 +1,8 @@ 2005-06-23 Matthias Clasen + * 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) diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index a39a239..920ca63 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,5 +1,8 @@ 2005-06-23 Matthias Clasen + * 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) diff --git a/glib/gkeyfile.c b/glib/gkeyfile.c index 485c862..0c80dfe 100644 --- a/glib/gkeyfile.c +++ b/glib/gkeyfile.c @@ -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; diff --git a/tests/keyfile-test.c b/tests/keyfile-test.c index 6680648..1df71d3 100644 --- a/tests/keyfile-test.c +++ b/tests/keyfile-test.c @@ -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); }