diff libpurple/protocols/jabber/message.c @ 24448:71c42ce1a1df

I got a crash happened at dereferencing chat when it's NULL, I think this happened as I got disconnected, but unfortunately I forgot to copy my debug log. #3 <signal handler called> #4 0x00007fb8103f43a2 in jabber_message_parse (js=0x45b5090, packet=0x4426790) at message.c:615 #5 0x00007fb8103ea75f in jabber_process_packet (js=0x45b5090, packet=0x7fff2338fec0) at jabber.c:215 #6 0x00007fb8103f691e in jabber_parser_element_end_libxml ( user_data=0x45b5090, element_name=0x4675e2c "message", prefix=0x0, namespace=0x4675c7a "jabber:client") at parser.c:116 #7 0x00007fb815c05fa3 in ?? () from /usr/lib/libxml2.so.2 #8 0x00007fb815c12e38 in xmlParseChunk () from /usr/lib/libxml2.so.2 #9 0x00007fb8103f6ae0 in jabber_parser_process (js=0x45b5090, buf=0x7fb8106101c0 "='20081110T22:23:49'/></message><message from='devel@conference.pidgin.im/darkrain42' to='khc@hxbc.us/Home' type='groupchat' id='purpled03bd02a'><body>2.5.8, I think?</body><html xmlns='http://jabber."..., len=1440) at parser.c:209 #10 0x00007fb8103eb092 in jabber_recv_cb (data=0x441afb0, source=25, condition=PURPLE_INPUT_READ) at jabber.c:481 #11 0x000000000046ddc5 in pidgin_io_invoke (source=0x438af30, condition=G_IO_IN, data=0x4430d10) at gtkeventloop.c:78 #12 0x00007fb815f5cd3b in g_main_context_dispatch ()
author Ka-Hing Cheung <khc@hxbc.us>
date Sat, 15 Nov 2008 17:37:44 +0000
parents 14915e96311e
children fae699fece1f
line wrap: on
line diff
--- a/libpurple/protocols/jabber/message.c	Sat Nov 15 16:15:33 2008 +0000
+++ b/libpurple/protocols/jabber/message.c	Sat Nov 15 17:37:44 2008 +0000
@@ -612,7 +612,7 @@
 
 						if (jid) {
 							chat = jabber_chat_find(js, jid->node, jid->domain);
-							conv = chat->conv;
+							if (chat) conv = chat->conv;
 						}
 
 						jabber_id_free(jid);
@@ -644,7 +644,7 @@
 				/* note: if there were no smileys in the incoming message, or
 				  	if receiving custom smileys is turned off, smiley_refs will
 					be NULL */
-				for (; smiley_refs ; smiley_refs = g_list_delete_link(smiley_refs, smiley_refs)) {
+				for (; conv && smiley_refs ; smiley_refs = g_list_delete_link(smiley_refs, smiley_refs)) {
 					JabberSmileyRef *ref = (JabberSmileyRef *) smiley_refs->data;
 					const gchar *cid = ref->cid;
 					const gchar *alt = ref->alt;