[gvfs] Fix some memory leaks



commit 2dbfccc5e43583e152a156eeaf4210ffb1b959d8
Author: William Jon McCann <jmccann redhat com>
Date:   Tue Sep 11 00:51:37 2012 -0400

    Fix some memory leaks
    
    https://bugzilla.gnome.org/show_bug.cgi?id=683770

 client/gdaemonvfs.c     |    1 +
 client/gvfsdaemondbus.c |   18 +++++++++++++-----
 2 files changed, 14 insertions(+), 5 deletions(-)
---
diff --git a/client/gdaemonvfs.c b/client/gdaemonvfs.c
index f0923c3..6ff64e5 100644
--- a/client/gdaemonvfs.c
+++ b/client/gdaemonvfs.c
@@ -653,6 +653,7 @@ fill_mountable_info (GDaemonVfs *vfs)
 	g_printerr ("org.gtk.vfs.MountTracker.listMountableInfo call failed: %s (%s, %d)\n",
 		    error->message, g_quark_to_string (error->domain), error->code);
       g_error_free (error);
+      g_object_unref (proxy);
       return;
     }
 
diff --git a/client/gvfsdaemondbus.c b/client/gvfsdaemondbus.c
index 837d786..a31e9d3 100644
--- a/client/gvfsdaemondbus.c
+++ b/client/gvfsdaemondbus.c
@@ -262,7 +262,7 @@ set_connection_for_async (GDBusConnection *connection, const char *dbus_id)
  *************************************************************************/
 
 typedef struct {
-  const char *dbus_id;
+  char *dbus_id;
 
   GDBusConnection *connection;
   GCancellable *cancellable;
@@ -285,6 +285,7 @@ async_call_finish (AsyncDBusCall *async_call)
   g_clear_object (&async_call->connection);
   g_clear_object (&async_call->cancellable);
   g_clear_error (&async_call->io_error);
+  g_free (async_call->dbus_id);
   g_free (async_call);
 }
 
@@ -344,7 +345,7 @@ async_get_connection_response (GVfsDBusDaemon *proxy,
 {
   AsyncDBusCall *async_call = user_data;
   GError *error = NULL;
-  gchar *address1;
+  gchar *address1 = NULL;
 
   if (! gvfs_dbus_daemon_call_get_connection_finish (proxy,
                                                      &address1, NULL,
@@ -353,6 +354,7 @@ async_get_connection_response (GVfsDBusDaemon *proxy,
     {
       async_call->io_error = g_error_copy (error);
       g_error_free (error);
+      g_free (address1);
       async_call_finish (async_call);
       return;
     }
@@ -363,6 +365,7 @@ async_get_connection_response (GVfsDBusDaemon *proxy,
                                      async_call->cancellable,
                                      async_got_private_connection_cb,
                                      async_call);
+  g_free (address1);
 }
 
 static void
@@ -661,7 +664,6 @@ _g_dbus_connection_get_sync (const char *dbus_id,
 	return bus; /* We actually wanted the session bus, so done */
     }
 
-  address1 = NULL;
   daemon_proxy = gvfs_dbus_daemon_proxy_new_sync (local->session_bus,
                                                   G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES | G_DBUS_PROXY_FLAGS_DO_NOT_CONNECT_SIGNALS,
                                                   dbus_id,
@@ -671,6 +673,7 @@ _g_dbus_connection_get_sync (const char *dbus_id,
   if (daemon_proxy == NULL)
     return NULL;
 
+  address1 = NULL;
   res = gvfs_dbus_daemon_call_get_connection_sync (daemon_proxy,
                                                    &address1,
                                                    NULL,
@@ -679,7 +682,11 @@ _g_dbus_connection_get_sync (const char *dbus_id,
   g_object_unref (daemon_proxy);
 
   if (!res)
-    return NULL;
+    {
+      g_free (address1);
+      return NULL;
+    }
+
 
   local_error = NULL;
   connection = g_dbus_connection_new_for_address_sync (address1,
@@ -687,13 +694,14 @@ _g_dbus_connection_get_sync (const char *dbus_id,
                                                        NULL, /* GDBusAuthObserver */
                                                        cancellable,
                                                        &local_error);
+  g_free (address1);
+
   if (!connection)
     {
       g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
 		   "Error while getting peer-to-peer dbus connection: %s",
 		   local_error->message);
       g_error_free (local_error);
-      g_free (address1);
       return NULL;
     }
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]