aboutsummaryrefslogtreecommitdiff
path: root/liblogdiag/ld-symbol-category.c
diff options
context:
space:
mode:
authorPřemysl Janouch <p.janouch@gmail.com>2012-08-11 21:00:38 +0200
committerPřemysl Janouch <p.janouch@gmail.com>2012-08-12 01:01:13 +0200
commitbb224bafd043e07fd18e3d8cda2c3f41c132e507 (patch)
tree2332e4a1228bb43324ce56bc8253595e979ee11f /liblogdiag/ld-symbol-category.c
parentf55afb6542b9eb39e56a32dc8a18002ad680ad41 (diff)
downloadlogdiag-bb224bafd043e07fd18e3d8cda2c3f41c132e507.tar.gz
logdiag-bb224bafd043e07fd18e3d8cda2c3f41c132e507.tar.xz
logdiag-bb224bafd043e07fd18e3d8cda2c3f41c132e507.zip
More fixing.
* Fix a resource leak in LdLibrary. * Add missing property change notifiers to ld_diagram_object_{get,set}_storage(). * Don't unref the parameter in ld_symbol_category_remove_{symbol,subcategory} if it wasn't actually removed from the internal list. * Fix a cyclic dependency problem in LdDiagram.
Diffstat (limited to 'liblogdiag/ld-symbol-category.c')
-rw-r--r--liblogdiag/ld-symbol-category.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/liblogdiag/ld-symbol-category.c b/liblogdiag/ld-symbol-category.c
index d8150dc..4c35c4c 100644
--- a/liblogdiag/ld-symbol-category.c
+++ b/liblogdiag/ld-symbol-category.c
@@ -325,8 +325,11 @@ ld_symbol_category_remove_symbol (LdSymbolCategory *self,
g_return_if_fail (LD_IS_SYMBOL_CATEGORY (self));
g_return_if_fail (LD_IS_SYMBOL (symbol));
- g_object_unref (symbol);
- self->priv->symbols = g_slist_remove (self->priv->symbols, symbol);
+ if (g_slist_find (self->priv->symbols, symbol))
+ {
+ self->priv->symbols = g_slist_remove (self->priv->symbols, symbol);
+ g_object_unref (symbol);
+ }
}
/**
@@ -378,9 +381,12 @@ ld_symbol_category_remove_subcategory (LdSymbolCategory *self,
g_return_if_fail (LD_IS_SYMBOL_CATEGORY (self));
g_return_if_fail (LD_IS_SYMBOL_CATEGORY (category));
- g_object_unref (category);
- self->priv->subcategories
- = g_slist_remove (self->priv->subcategories, category);
+ if (g_slist_find (self->priv->subcategories, category))
+ {
+ self->priv->subcategories
+ = g_slist_remove (self->priv->subcategories, category);
+ g_object_unref (category);
+ }
}
/**