diff options
-rw-r--r-- | protocols/bee.h | 1 | ||||
-rw-r--r-- | protocols/bee_chat.c | 17 | ||||
-rw-r--r-- | protocols/purple/purple.c | 19 |
3 files changed, 20 insertions, 17 deletions
diff --git a/protocols/bee.h b/protocols/bee.h index 93027d59..56c34210 100644 --- a/protocols/bee.h +++ b/protocols/bee.h @@ -191,5 +191,6 @@ G_MODULE_EXPORT void imcb_chat_invite(struct im_connection *ic, const char *name G_GNUC_DEPRECATED G_MODULE_EXPORT void bee_chat_list_finish(struct im_connection *ic); G_MODULE_EXPORT void imcb_chat_list_finish(struct im_connection *ic); +G_MODULE_EXPORT void imcb_chat_list_free(struct im_connection *ic); #endif /* __BEE_H__ */ diff --git a/protocols/bee_chat.c b/protocols/bee_chat.c index c5f2b262..31b37737 100644 --- a/protocols/bee_chat.c +++ b/protocols/bee_chat.c @@ -284,3 +284,20 @@ void bee_chat_list_finish(struct im_connection *ic) imcb_log(ic, "Warning: using deprecated bee_chat_list_finish. This will be removed in the stable release."); imcb_chat_list_finish(ic); } + +void imcb_chat_list_free(struct im_connection *ic) +{ + bee_chat_info_t *ci; + GSList *l = ic->chatlist; + + while (l) { + ci = l->data; + l = g_slist_delete_link(l, l); + + g_free(ci->title); + g_free(ci->topic); + g_free(ci); + } + + ic->chatlist = NULL; +} diff --git a/protocols/purple/purple.c b/protocols/purple/purple.c index bd84966e..71b495db 100644 --- a/protocols/purple/purple.c +++ b/protocols/purple/purple.c @@ -360,21 +360,6 @@ static void purple_login(account_t *acc) } } -static void purple_chatlist_free(struct im_connection *ic) -{ - bee_chat_info_t *ci; - GSList *l = ic->chatlist; - - while (l) { - ci = l->data; - l = g_slist_delete_link(l, l); - - g_free(ci->title); - g_free(ci->topic); - g_free(ci); - } -} - static void purple_logout(struct im_connection *ic) { struct purple_data *pd = ic->proto_data; @@ -390,7 +375,7 @@ static void purple_logout(struct im_connection *ic) purple_account_set_enabled(pd->account, "BitlBee", FALSE); purple_connections = g_slist_remove(purple_connections, ic); purple_accounts_remove(pd->account); - purple_chatlist_free(ic); + imcb_chat_list_free(ic); g_hash_table_destroy(pd->input_requests); g_free(pd); } @@ -1401,7 +1386,7 @@ static void prplcb_roomlist_in_progress(PurpleRoomlist *list, gboolean in_progre } ic = purple_ic_by_pa(list->account); - purple_chatlist_free(ic); + imcb_chat_list_free(ic); ic->chatlist = g_slist_reverse(rld->chats); rld->chats = NULL; |