From f959495182db79b0c3b51c6bc4e9fcacdc591c40 Mon Sep 17 00:00:00 2001 From: Wilmer van der Gaast Date: Sun, 18 Feb 2007 17:19:01 +0000 Subject: Preventing infinite loop while cleaning up accounts in irc_free(). Closes #245. --- irc.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'irc.c') diff --git a/irc.c b/irc.c index f9654034..eb4a395d 100644 --- a/irc.c +++ b/irc.c @@ -255,7 +255,12 @@ void irc_free(irc_t * irc) query_del(irc, irc->queries); while (irc->accounts) - account_del(irc, irc->accounts); + if (irc->accounts->gc == NULL) + account_del(irc, irc->accounts); + else + /* Nasty hack, but account_del() doesn't work in this + case and we don't want infinite loops, do we? ;-) */ + irc->accounts = irc->accounts->next; while (irc->set) set_del(&irc->set, irc->set->key); -- cgit v1.2.3