diff options
author | Nathan Walp <nwalp@pidgin.im> | 2007-06-23 21:22:56 +0000 |
---|---|---|
committer | Nathan Walp <nwalp@pidgin.im> | 2007-06-23 21:22:56 +0000 |
commit | 13c7922707bb0ea2c2c442563a24cda53fe7192b (patch) | |
tree | e1cd20831eb66870047cb851ca670bcd90ff5903 /libpurple/xmlnode.c | |
parent | e1df02246459dfc858b0cb28192c476beabcaa5c (diff) | |
download | pidgin-13c7922707bb0ea2c2c442563a24cda53fe7192b.tar.gz |
fix a buddy icon bug in jabber
Diffstat (limited to 'libpurple/xmlnode.c')
-rw-r--r-- | libpurple/xmlnode.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/libpurple/xmlnode.c b/libpurple/xmlnode.c index 942d480234..8553fcdfdd 100644 --- a/libpurple/xmlnode.c +++ b/libpurple/xmlnode.c @@ -268,6 +268,22 @@ xmlnode_free(xmlnode *node) g_return_if_fail(node != NULL); + /* if we're part of a tree, remove ourselves from the tree first */ + if(NULL != node->parent) { + if(node->parent->child == node) { + node->parent->child = node->next; + } else { + xmlnode *prev = node->parent->child; + while(prev && prev->next != node) { + prev = prev->next; + } + if(prev) { + prev->next = node->next; + } + } + } + + /* now free our children */ x = node->child; while(x) { y = x->next; @@ -275,6 +291,7 @@ xmlnode_free(xmlnode *node) x = y; } + /* now dispose of ourselves */ g_free(node->name); g_free(node->data); g_free(node->xmlns); |