From 0d3d4aa5092a3b1c893d3a8c6e5d669cb04f833f Mon Sep 17 00:00:00 2001 From: marian Date: Wed, 14 May 2008 08:03:05 +0000 Subject: [PATCH] Fixed bug: delay xml element release when decoding a jingle jabber event until transport and/or media are retrieved from it. git-svn-id: http://voip.null.ro/svn/yate@1983 acf43c95-373e-0410-b603-e72c3f656dc1 --- libs/yjingle/session.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/libs/yjingle/session.cpp b/libs/yjingle/session.cpp index 818f8afc..7c1e162f 100644 --- a/libs/yjingle/session.cpp +++ b/libs/yjingle/session.cpp @@ -705,11 +705,14 @@ JGEvent* JGSession::decodeJingle(JBEvent* jbev) media = jingle->findFirstChild(XMLElement::Description); if (media && !media->hasAttribute("xmlns",s_ns[XMPPNamespace::JingleAudio])) break; - event = new JGEvent(act,this,jbev->releaseXML()); + // Don't set the event's element yet: this would invalidate the 'jingle' variable + event = new JGEvent(act,this,0); XMLElement* t = trans ? trans->findFirstChild(XMLElement::Candidate) : 0; for (; t; t = trans->findNextChild(t,XMLElement::Candidate)) event->m_transport.append(new JGTransport(t)); event->m_audio.fromXML(media); + event->m_id = jbev->id(); + event->m_element = jbev->releaseXML(); break; } if (trans != jingle)