Merge branch 'wip/kabus/fix-leaks' into 'main'

gio/filenamecompleter: Fix leaks

See merge request GNOME/glib!4702
This commit is contained in:
Philip Withnall
2025-07-21 11:19:30 +00:00

View File

@@ -346,7 +346,9 @@ init_completion (GFilenameCompleter *completer,
char *basename; char *basename;
char *t; char *t;
size_t len; size_t len;
GList *basenames;
basenames = NULL;
*basename_out = NULL; *basename_out = NULL;
should_escape = ! (g_path_is_absolute (initial_text) || *initial_text == '~'); should_escape = ! (g_path_is_absolute (initial_text) || *initial_text == '~');
@@ -355,23 +357,20 @@ init_completion (GFilenameCompleter *completer,
if (len > 0 && if (len > 0 &&
initial_text[len - 1] == '/') initial_text[len - 1] == '/')
return NULL; goto out;
file = g_file_parse_name (initial_text); file = g_file_parse_name (initial_text);
parent = g_file_get_parent (file); parent = g_file_get_parent (file);
if (parent == NULL) if (parent == NULL)
{ goto out;
g_object_unref (file);
return NULL;
}
if (completer->basenames_dir == NULL || if (completer->basenames_dir == NULL ||
completer->basenames_are_escaped != should_escape || completer->basenames_are_escaped != should_escape ||
!g_file_equal (parent, completer->basenames_dir)) !g_file_equal (parent, completer->basenames_dir))
{ {
schedule_load_basenames (completer, parent, should_escape); schedule_load_basenames (completer, parent, should_escape);
g_object_unref (file);
return NULL; goto out;
} }
basename = g_file_get_basename (file); basename = g_file_get_basename (file);
@@ -388,12 +387,17 @@ init_completion (GFilenameCompleter *completer,
g_free (t); g_free (t);
if (basename == NULL) if (basename == NULL)
return NULL; goto out;
} }
basenames = completer->basenames;
*basename_out = basename; *basename_out = basename;
return completer->basenames; out:
g_clear_object (&file);
g_clear_object (&parent);
return basenames;
} }
/** /**