Mercurial > pidgin
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; |