droute: Fix another memory few memory leaks
[platform/core/uifw/at-spi2-atk.git] / droute / droute.c
index 9212e4d..82eea8f 100644 (file)
@@ -107,7 +107,7 @@ path_new (DRouteContext *cnx,
     new_path->properties = g_hash_table_new_full ((GHashFunc)str_pair_hash,
                                                   str_pair_equal,
                                                   g_free,
-                                                  NULL);
+                                                  g_free);
 
     new_path->introspect_children_cb = introspect_children_cb;
     new_path->introspect_children_data = introspect_children_data;
@@ -123,9 +123,10 @@ path_free (DRoutePath *path, gpointer user_data)
     g_free (path->path);
     g_string_chunk_free  (path->chunks);
     g_ptr_array_free     (path->interfaces, TRUE);
-    g_ptr_array_free     (path->introspection, FALSE);
+    g_free(g_ptr_array_free     (path->introspection, FALSE));
     g_hash_table_destroy (path->methods);
     g_hash_table_destroy (path->properties);
+    g_free (path);
 }
 
 static void *
@@ -154,6 +155,7 @@ void
 droute_free (DRouteContext *cnx)
 {
     g_ptr_array_foreach (cnx->registered_paths, (GFunc) path_free, NULL);
+    g_ptr_array_free (cnx->registered_paths, TRUE);
     g_free (cnx);
 }
 
@@ -174,7 +176,6 @@ droute_add_one (DRouteContext *cnx,
                 const void    *data)
 {
     DRoutePath *new_path;
-    gboolean registered;
 
     new_path = path_new (cnx, path, FALSE, (void *)data, NULL, NULL, NULL);
 
@@ -215,7 +216,7 @@ droute_path_add_interface(DRoutePath *path,
 
     itf = g_string_chunk_insert (path->chunks, name);
     g_ptr_array_add (path->interfaces, itf);
-    g_ptr_array_add (path->introspection, introspect);
+    g_ptr_array_add (path->introspection, (gpointer) introspect);
 
     for (; methods != NULL && methods->name != NULL; methods++)
       {
@@ -537,16 +538,15 @@ handle_other (DBusConnection *bus,
         else
             reply = (func) (bus, message, datum);
 
-        if (!reply)
+        /* All D-Bus method calls must have a reply.
+         * If one is not provided presume that the caller has already
+         * sent one.
+         */
+        if (reply)
           {
-            /* All D-Bus method calls must have a reply.
-             * If one is not provided presume that the call has a void
-             * return and no error has occured.
-             */
-            reply = dbus_message_new_method_return (message);
+            dbus_connection_send (bus, reply, NULL);
+            dbus_message_unref (reply);
           }
-        dbus_connection_send (bus, reply, NULL);
-        dbus_message_unref (reply);
         result = DBUS_HANDLER_RESULT_HANDLED;
       }