[geany/geany-plugins] c29597: Merge pull request #605 from techee/free_dir

Frank Lanitz git-noreply at xxxxx
Mon Oct 2 10:30:31 UTC 2017


Branch:      refs/heads/master
Author:      Frank Lanitz <frank at frank.uvena.de>
Committer:   GitHub <noreply at github.com>
Date:        Mon, 02 Oct 2017 10:30:31 UTC
Commit:      c29597734a17c63448dabf8fc82043c8ea16efba
             https://github.com/geany/geany-plugins/commit/c29597734a17c63448dabf8fc82043c8ea16efba

Log Message:
-----------
Merge pull request #605 from techee/free_dir

projectorganizer: Close dir created with g_dir_open() in some special cases


Modified Paths:
--------------
    projectorganizer/src/prjorg-project.c

Modified: projectorganizer/src/prjorg-project.c
18 lines changed, 13 insertions(+), 5 deletions(-)
===================================================================
@@ -74,6 +74,9 @@ static GSList *get_file_list(const gchar *utf8_path, GSList *patterns,
 {
 	GSList *list = NULL;
 	GDir *dir;
+	const gchar *child_name;
+	GSList *child;
+	GSList *children = NULL;
 	gchar *locale_path = utils_get_locale_from_utf8(utf8_path);
 	gchar *real_path = tm_get_real_path(locale_path);
 
@@ -82,19 +85,24 @@ static GSList *get_file_list(const gchar *utf8_path, GSList *patterns,
 	{
 		g_free(locale_path);
 		g_free(real_path);
+		if (dir)
+			g_dir_close(dir);
 		return NULL;
 	}
 
 	g_hash_table_insert(visited_paths, real_path, GINT_TO_POINTER(1));
 
-	while (TRUE)
+	while ((child_name = g_dir_read_name(dir)))
+		children = g_slist_prepend(children, g_strdup(child_name));
+
+	g_dir_close(dir);
+
+	foreach_slist(child, children)
 	{
 		const gchar *locale_name;
 		gchar *locale_filename, *utf8_filename, *utf8_name;
 
-		locale_name = g_dir_read_name(dir);
-		if (!locale_name)
-			break;
+		locale_name = child->data;
 
 		utf8_name = utils_get_utf8_from_locale(locale_name);
 		locale_filename = g_build_filename(locale_path, locale_name, NULL);
@@ -123,7 +131,7 @@ static GSList *get_file_list(const gchar *utf8_path, GSList *patterns,
 		g_free(utf8_name);
 	}
 
-	g_dir_close(dir);
+	g_slist_free_full(children, g_free);
 	g_free(locale_path);
 
 	return list;



--------------
This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).


More information about the Plugins-Commits mailing list