diff options
author | Ryan Lortie <desrt@desrt.ca> | 2010-12-15 11:35:28 -0500 |
---|---|---|
committer | Ryan Lortie <desrt@desrt.ca> | 2010-12-15 11:35:28 -0500 |
commit | d5814e585e7d13c10e644ff4885dff7667e37de3 (patch) | |
tree | 679b30de56bd79d94a91bc26a3e6ed999fecf7f4 /service | |
parent | 58c25a835e392e2dc3faf713f6cd738052e83953 (diff) | |
download | dconf-d5814e585e7d13c10e644ff4885dff7667e37de3.tar.gz |
Fix some leaks in the dconf service
Diffstat (limited to 'service')
-rw-r--r-- | service/dconf-rebuilder.c | 19 | ||||
-rw-r--r-- | service/service.c | 2 |
2 files changed, 15 insertions, 6 deletions
diff --git a/service/dconf-rebuilder.c b/service/dconf-rebuilder.c index cd1b623..d7f4cb3 100644 --- a/service/dconf-rebuilder.c +++ b/service/dconf-rebuilder.c @@ -189,19 +189,26 @@ dconf_rebuilder_rebuild (const gchar *filename, { DConfRebuilderState state = { prefix, strlen (prefix), 0, keys, values, n_items }; + gboolean success; GvdbTable *old; state.table = gvdb_hash_table_new (NULL, NULL); if ((old = gvdb_table_new (filename, FALSE, NULL))) - gvdb_table_walk (old, "/", - dconf_rebuilder_walk_open, - dconf_rebuilder_walk_value, - dconf_rebuilder_walk_close, - &state); + { + gvdb_table_walk (old, "/", + dconf_rebuilder_walk_open, + dconf_rebuilder_walk_value, + dconf_rebuilder_walk_close, + &state); + gvdb_table_unref (old); + } while (state.index != state.n_items) dconf_rebuilder_put_item (&state); - return gvdb_table_write_contents (state.table, filename, FALSE, error); + success = gvdb_table_write_contents (state.table, filename, FALSE, error); + g_hash_table_unref (state.table); + + return success; } diff --git a/service/service.c b/service/service.c index aca0029..c5e12c8 100644 --- a/service/service.c +++ b/service/service.c @@ -163,6 +163,7 @@ method_call (GDBusConnection *connection, if (!dconf_writer_write (writer, key, value, &error)) { g_dbus_method_invocation_return_gerror (invocation, error); + g_variant_unref (value); g_error_free (error); return; } @@ -178,6 +179,7 @@ method_call (GDBusConnection *connection, g_variant_new ("(s@ass)", key, none, tag), NULL); + g_variant_unref (value); g_free (path); g_free (tag); } |