diff options
-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); } |