-after call of g_slist_remove() the `pos` points to released area,
-so dereferencing pos->data isn't acceptable.
-
---- irssi-0.8.10/src/irc/dcc/dcc.c.orig 2005-10-19 04:13:31.000000000 +0200
-+++ irssi-0.8.10/src/irc/dcc/dcc.c 2006-05-02 22:33:11.000000000 +0200
+--- irssi-0.8.11/src/irc/dcc/dcc.c 2007-06-07 01:49:35.928848024 +0200
++++ irssi-0.8.11/src/irc/dcc/dcc.c-new 2007-06-07 01:52:47.442154599 +0200
@@ -55,11 +55,13 @@
void dcc_unregister_type(const char *type)
{
pos = gslist_find_string(dcc_types, type);
if (pos != NULL) {
-- dcc_types = g_slist_remove(dcc_types, pos->data);
- g_free(pos->data);
+- dcc_types = g_slist_remove(dcc_types, pos->data);
+ data = pos->data;
+ dcc_types = g_slist_remove(dcc_types, data);
+ g_free(data);