comparison libpurple/protocols/jabber/parser.c @ 17894:bbd92ee894f2

Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
author Andreas Monitzer <pidgin@monitzer.com>
date Tue, 03 Jul 2007 23:51:26 +0000
parents 108f3b42976f
children 481749fc0b6b
comparison
equal deleted inserted replaced
17893:11dd7969dd4b 17894:bbd92ee894f2
111 if(!xmlStrcmp((xmlChar*) js->current->name, element_name)) 111 if(!xmlStrcmp((xmlChar*) js->current->name, element_name))
112 js->current = js->current->parent; 112 js->current = js->current->parent;
113 } else { 113 } else {
114 xmlnode *packet = js->current; 114 xmlnode *packet = js->current;
115 js->current = NULL; 115 js->current = NULL;
116 jabber_process_packet(js, packet); 116 jabber_process_packet(js, &packet);
117 xmlnode_free(packet); 117 xmlnode_free(packet);
118 } 118 }
119 } 119 }
120 120
121 static void 121 static void