From b94e615291bd6012c5cf4e945b969c809b161a0c Mon Sep 17 00:00:00 2001 From: Christian Thaeter Date: Sat, 6 Sep 2008 07:52:55 +0200 Subject: [PATCH] just psplay_remove leaked, do psplay_delete_node --- src/backend/config_lookup.c | 2 +- src/backend/configitem.c | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/backend/config_lookup.c b/src/backend/config_lookup.c index 12f8ae023..96c62c880 100644 --- a/src/backend/config_lookup.c +++ b/src/backend/config_lookup.c @@ -116,7 +116,7 @@ lumiera_config_lookup_remove (LumieraConfigLookup self, LumieraConfigitem item) /* last item in lookup, remove it from the splay tree */ LumieraConfigLookupentry entry = LLIST_TO_STRUCTP (llist_next (&item->lookup), lumiera_config_lookupentry, configitems); llist_unlink (&item->lookup); - psplay_remove (&self->tree, (PSplaynode)entry); + psplay_delete_node (&self->tree, (PSplaynode)entry); } else { diff --git a/src/backend/configitem.c b/src/backend/configitem.c index 917676251..6252b0bcf 100644 --- a/src/backend/configitem.c +++ b/src/backend/configitem.c @@ -74,17 +74,17 @@ lumiera_configitem_destroy (LumieraConfigitem self, LumieraConfigLookup lookup) if (self) { + LLIST_WHILE_HEAD (&self->childs, node) + lumiera_configitem_delete ((LumieraConfigitem) node, lookup); + + ENSURE (llist_is_empty (&self->childs), "destructor didn't remove childs"); + if (self->vtable && self->vtable->destroy) self->vtable->destroy (self); if (!llist_is_empty (&self->lookup)) lumiera_config_lookup_remove (lookup, self); - LLIST_WHILE_HEAD (&self->childs, node) - lumiera_configitem_delete ((LumieraConfigitem) node, lookup); - - ENSURE (llist_is_empty (&self->childs), "destructor didn't remove childs"); - llist_unlink (&self->link); lumiera_free (self->line); }