Mercurial > pidgin
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 |