comparison plugins/napster.c @ 1325:08aa745310f6

[gaim-migrate @ 1335] Segfault Fix Notices when people leave a channel Mem leak fix committer: Tailor Script <tailor@pidgin.im>
author Rob Flynn <gaim@robflynn.com>
date Wed, 20 Dec 2000 04:31:05 +0000
parents 4cbb78f05e4b
children 113a3d16f1ce
comparison
equal deleted inserted replaced
1324:faee6f18b2a8 1325:08aa745310f6
103 103
104 channels = ndata->channels; 104 channels = ndata->channels;
105 105
106 while (channels) { 106 while (channels) {
107 channel = (struct nap_channel *)channels->data; 107 channel = (struct nap_channel *)channels->data;
108 if (!g_strcasecmp(name, channel->name)) { 108
109 return channel; 109 if (channel) {
110 if (!g_strcasecmp(name, channel->name)) {
111 return channel;
112 }
110 } 113 }
111
112 channels = g_slist_next(channels); 114 channels = g_slist_next(channels);
113 } 115 }
114 116
115 return NULL; 117 return NULL;
116 } 118 }
236 238
237 add_chat_buddy(convo, res[1]); 239 add_chat_buddy(convo, res[1]);
238 240
239 g_strfreev(res); 241 g_strfreev(res);
240 242
243 free(buf);
244 return;
245 }
246
247 if (command == 0x197) {
248 struct nap_channel *channel;
249 struct conversation *convo;
250 gchar **res;
251
252 res = g_strsplit(buf, " ", 0);
253
254 channel = find_channel_by_name(gc, res[0]);
255 convo = find_conversation_by_id(gc, channel->id);
256
257 remove_chat_buddy(convo, res[1]);
258
259 g_strfreev(res);
241 free(buf); 260 free(buf);
242 return; 261 return;
243 } 262 }
244 263
245 if (command == 0x193) { 264 if (command == 0x193) {
434 if (!channel) /* Again, I'm not sure how this would happen */ 453 if (!channel) /* Again, I'm not sure how this would happen */
435 return; 454 return;
436 455
437 nap_write_packet(gc, 0x191, channel->name); 456 nap_write_packet(gc, 0x191, channel->name);
438 457
439 channels = g_slist_remove(channels, channel); 458 ndata->channels = g_slist_remove(ndata->channels, channel);
440 g_free(channel->name); 459 g_free(channel->name);
441 g_free(channel); 460 g_free(channel);
442 461
443 } 462 }
444 463
478 GSList *channels = ndata->channels; 497 GSList *channels = ndata->channels;
479 498
480 if (gc->inpa) 499 if (gc->inpa)
481 gdk_input_remove(gc->inpa); 500 gdk_input_remove(gc->inpa);
482 501
483 while (channels) { 502 while (ndata->channels) {
484 channel = (struct nap_channel *)channels->data; 503 channel = (struct nap_channel *)ndata->channels->data;
485 g_free(channel->name); 504 g_free(channel->name);
486 channels = g_slist_remove(channels, channel); 505 ndata->channels = g_slist_remove(ndata->channels, channel);
487 g_free(channel); 506 g_free(channel);
488 } 507 }
489 508
509 free(gc->proto_data);
490 } 510 }
491 511
492 static void nap_add_buddies(struct gaim_connection *gc, GList *buddies) 512 static void nap_add_buddies(struct gaim_connection *gc, GList *buddies)
493 { 513 {
494 struct nap_data *ndata = (struct nap_data *)gc->proto_data; 514 struct nap_data *ndata = (struct nap_data *)gc->proto_data;