summaryrefslogtreecommitdiff
path: root/service
diff options
context:
space:
mode:
authorRyan Lortie <desrt@desrt.ca>2010-12-15 11:35:28 -0500
committerRyan Lortie <desrt@desrt.ca>2010-12-15 11:35:28 -0500
commitd5814e585e7d13c10e644ff4885dff7667e37de3 (patch)
tree679b30de56bd79d94a91bc26a3e6ed999fecf7f4 /service
parent58c25a835e392e2dc3faf713f6cd738052e83953 (diff)
downloaddconf-d5814e585e7d13c10e644ff4885dff7667e37de3.tar.gz
Fix some leaks in the dconf service
Diffstat (limited to 'service')
-rw-r--r--service/dconf-rebuilder.c19
-rw-r--r--service/service.c2
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);
}