droute: Fix memory leak in path cleanup
authorAndrew Potter <agpotter@gmail.com>
Mon, 19 Nov 2012 16:33:40 +0000 (10:33 -0600)
committerMike Gorse <mgorse@suse.com>
Mon, 19 Nov 2012 16:33:40 +0000 (10:33 -0600)
    Frees all allocated memory.

    g_ptr_array_free(..., FALSE) was probably being called to avoid a destructor being called on the elements of the array that point to static data. But that method returns an array that must still be g_free()d.

    https://bugzilla.gnome.org/show_bug.cgi?id=688363

droute/droute.c

index f1ff993..0a0bfd6 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,
     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;
 
     new_path->introspect_children_cb = introspect_children_cb;
     new_path->introspect_children_data = introspect_children_data;
@@ -123,7 +123,7 @@ 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_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_hash_table_destroy (path->methods);
     g_hash_table_destroy (path->properties);
 }