summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyan Lortie <desrt@desrt.ca>2012-03-19 11:24:26 -0400
committerRyan Lortie <desrt@desrt.ca>2012-03-19 11:24:26 -0400
commit1ce11b2802c915b7e4c9c8d7f1d2862982335406 (patch)
tree45859aba5c13ff16ba357b3fbc4a9ba13b7601c0
parent2e777f788c1fad678a8a64bd11de8d642fbbeabc (diff)
downloaddconf-1ce11b2802c915b7e4c9c8d7f1d2862982335406.tar.gz
dconf engine: don't leak lock table on reload
If the system database changes while a program is running make sure we unref the old copy of the lock table (if it exists) before trying to load the new one.
-rw-r--r--engine/dconf-engine.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/engine/dconf-engine.c b/engine/dconf-engine.c
index 6f5c2af..aedabcf 100644
--- a/engine/dconf-engine.c
+++ b/engine/dconf-engine.c
@@ -169,6 +169,12 @@ dconf_engine_refresh_system (DConfEngine *engine,
{
if (engine->gvdbs[i] && !gvdb_table_is_valid (engine->gvdbs[i]))
{
+ if (engine->lock_tables[i])
+ {
+ gvdb_table_unref (engine->lock_tables[i]);
+ engine->lock_tables[i] = NULL;
+ }
+
gvdb_table_unref (engine->gvdbs[i]);
engine->gvdbs[i] = NULL;
}