# HG changeset patch # User Nathan Walp # Date 1075351621 0 # Node ID 3e1762ad0f9882dde0cd067f30f1d45d3a94ed07 # Parent 0609485e5bb58e9cfdfa3facfcc746cb4400e8a6 [gaim-migrate @ 8901] This plugs a tiny memory leak, and I think it will fix marv's ISP-suckage auto-join bug. committer: Tailor Script diff -r 0609485e5bb5 -r 3e1762ad0f98 src/protocols/jabber/presence.c --- a/src/protocols/jabber/presence.c Wed Jan 28 22:15:47 2004 +0000 +++ b/src/protocols/jabber/presence.c Thu Jan 29 04:47:01 2004 +0000 @@ -299,20 +299,22 @@ jabber_chat_destroy(chat); jabber_id_free(jid); g_free(status); + g_free(room_jid); return; } - if(!chat->conv) { - chat->id = i++; - chat->muc = muc; - chat->conv = serv_got_joined_chat(js->gc, chat->id, room_jid); - gaim_conv_chat_set_nick(GAIM_CONV_CHAT(chat->conv), jid->resource); - } - if(type && !strcmp(type, "unavailable")) { gboolean nick_change = FALSE; + /* If we haven't joined the chat yet, we don't care that someone left */ + if(!chat->conv) { + jabber_id_free(jid); + g_free(status); + g_free(room_jid); + return; + } + jabber_buddy_remove_resource(jb, jid->resource); if(chat->muc) { xmlnode *x; @@ -345,6 +347,13 @@ } } } else { + if(!chat->conv) { + chat->id = i++; + chat->muc = muc; + chat->conv = serv_got_joined_chat(js->gc, chat->id, room_jid); + gaim_conv_chat_set_nick(GAIM_CONV_CHAT(chat->conv), jid->resource); + } + jabber_buddy_track_resource(jb, jid->resource, priority, state, status);