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:
Christophe Fergeau 2015-03-29 17:15:15 +02:00 committed by Matthias Clasen
parent fa17536598
commit 60a6ae6f0b

View File

@ -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