# HG changeset patch # User Rob Flynn # Date 977286665 0 # Node ID 08aa745310f6dcc01b9814ad36986dc6c6836cf8 # Parent faee6f18b2a8feeae047a35e54920913a2cb05f5 [gaim-migrate @ 1335] Segfault Fix Notices when people leave a channel Mem leak fix committer: Tailor Script diff -r faee6f18b2a8 -r 08aa745310f6 plugins/napster.c --- a/plugins/napster.c Wed Dec 20 04:06:11 2000 +0000 +++ b/plugins/napster.c Wed Dec 20 04:31:05 2000 +0000 @@ -105,10 +105,12 @@ while (channels) { channel = (struct nap_channel *)channels->data; - if (!g_strcasecmp(name, channel->name)) { - return channel; + + if (channel) { + if (!g_strcasecmp(name, channel->name)) { + return channel; + } } - channels = g_slist_next(channels); } @@ -242,6 +244,23 @@ return; } + if (command == 0x197) { + struct nap_channel *channel; + struct conversation *convo; + gchar **res; + + res = g_strsplit(buf, " ", 0); + + channel = find_channel_by_name(gc, res[0]); + convo = find_conversation_by_id(gc, channel->id); + + remove_chat_buddy(convo, res[1]); + + g_strfreev(res); + free(buf); + return; + } + if (command == 0x193) { gchar **res; struct nap_channel *channel; @@ -436,7 +455,7 @@ nap_write_packet(gc, 0x191, channel->name); - channels = g_slist_remove(channels, channel); + ndata->channels = g_slist_remove(ndata->channels, channel); g_free(channel->name); g_free(channel); @@ -480,13 +499,14 @@ if (gc->inpa) gdk_input_remove(gc->inpa); - while (channels) { - channel = (struct nap_channel *)channels->data; + while (ndata->channels) { + channel = (struct nap_channel *)ndata->channels->data; g_free(channel->name); - channels = g_slist_remove(channels, channel); + ndata->channels = g_slist_remove(ndata->channels, channel); g_free(channel); } - + + free(gc->proto_data); } static void nap_add_buddies(struct gaim_connection *gc, GList *buddies)