mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-12-25 23:16:14 +01:00
Fix GError leak in g_file_query_writable_namespaces()
gvfs commit b358ca "Make sure metadata is always returned by query_writable_namespaces()" changed the query_writable_namespaces vfunc to never return NULL, but the error checking in g_daemon_file_query_writable_namespaces still assumes vfunc failure implies NULL return value and GError set. This causes a memory leak as on failure the GError will be set but the vfunc implementation will have created its own default list so NULL will not be returned, and the GError will never be cleared. This commit directly checks if the GError is set to detect failures, my_error is directly dereferenced in the error block anyway. This also removes an unneeded call to g_file_attribute_info_new(); as the vfunc always returns us a non-NULL GFileAttributeInfoList. https://bugzilla.gnome.org/show_bug.cgi?id=747364
This commit is contained in:
parent
fa17536598
commit
60a6ae6f0b
@ -4336,10 +4336,15 @@ g_file_query_writable_namespaces (GFile *file,
|
||||
list = (* iface->query_writable_namespaces) (file, cancellable, &my_error);
|
||||
|
||||
if (list == NULL)
|
||||
{
|
||||
g_warn_if_reached();
|
||||
list = g_file_attribute_info_list_new ();
|
||||
}
|
||||
|
||||
if (my_error != NULL)
|
||||
{
|
||||
if (my_error->domain == G_IO_ERROR && my_error->code == G_IO_ERROR_NOT_SUPPORTED)
|
||||
{
|
||||
list = g_file_attribute_info_list_new ();
|
||||
g_error_free (my_error);
|
||||
}
|
||||
else
|
||||
|
Loading…
Reference in New Issue
Block a user