mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-12-14 04:18:32 +01:00
Merge branch 'wip/kabus/fix-leaks' into 'main'
gio/filenamecompleter: Fix leaks See merge request GNOME/glib!4702
This commit is contained in:
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user