Mercurial > pidgin
changeset 24409:b44e1bbd5b4a
Attempt to avoid a crash in MSN. See the comment in the code.
Our MSN custom emoticon code is crashy, by the way. Basically I
think the slp/slplink/slpcall/switchboard code is buggy. I think
there are a lot of cross-references and they don't all clean up
after themselves correctly. But I don't understand this code
well enough to improve it.
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Thu, 13 Nov 2008 20:59:40 +0000 |
parents | 9d2ae3639079 |
children | f658f9a84fe9 34dcb702d0bb |
files | libpurple/protocols/msn/slp.c |
diffstat | 1 files changed, 11 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/libpurple/protocols/msn/slp.c Thu Nov 13 19:11:19 2008 +0000 +++ b/libpurple/protocols/msn/slp.c Thu Nov 13 20:59:40 2008 +0000 @@ -847,7 +847,17 @@ sha1 = msn_object_get_sha1(obj); slplink = msn_session_get_slplink(session, who); - slplink->swboard = swboard; + if (slplink->swboard != swboard) { + if (slplink->swboard != NULL) + /* + * Apparently we're using a different switchboard now or + * something? I don't know if this is normal, but it + * definitely happens. So make sure the old switchboard + * doesn't still have a reference to us. + */ + slplink->swboard->slplinks = g_list_remove(slplink->swboard->slplinks, slplink); + slplink->swboard = swboard; + } /* If the conversation doesn't exist then this is a custom smiley * used in the first message in a MSN conversation: we need to create