From 98b8775cd90ddacc994c1896a6e8cb3a71e24e41 Mon Sep 17 00:00:00 2001 From: elexis Date: Sun, 15 Sep 2019 10:28:23 +0000 Subject: [PATCH] Fix glooxwrapper::Message::when() memory leak in f2c76cc75d, refs #3156. Differential Revision: https://code.wildfiregames.com/D2291 Tested on: clang 8.0.1 This was SVN commit r22903. --- source/lobby/glooxwrapper/glooxwrapper.cpp | 15 +++++++-------- source/lobby/glooxwrapper/glooxwrapper.h | 3 ++- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/source/lobby/glooxwrapper/glooxwrapper.cpp b/source/lobby/glooxwrapper/glooxwrapper.cpp index c24ed8954f..75d81e9b86 100644 --- a/source/lobby/glooxwrapper/glooxwrapper.cpp +++ b/source/lobby/glooxwrapper/glooxwrapper.cpp @@ -533,16 +533,18 @@ glooxwrapper::string glooxwrapper::JID::resource() const glooxwrapper::Message::Message(gloox::Message* wrapped, bool owned) - : m_Wrapped(wrapped), m_Owned(owned) + : m_Wrapped(wrapped), + m_Owned(owned), + m_From(m_Wrapped->from()), + m_DelayedDelivery(m_Wrapped->when() ? new glooxwrapper::DelayedDelivery(m_Wrapped->when()) : nullptr) { - m_From = new glooxwrapper::JID(m_Wrapped->from()); } glooxwrapper::Message::~Message() { if (m_Owned) delete m_Wrapped; - delete m_From; + delete m_DelayedDelivery; } gloox::Message::MessageType glooxwrapper::Message::subtype() const @@ -552,7 +554,7 @@ gloox::Message::MessageType glooxwrapper::Message::subtype() const const glooxwrapper::JID& glooxwrapper::Message::from() const { - return *m_From; + return m_From; } glooxwrapper::string glooxwrapper::Message::body() const @@ -572,10 +574,7 @@ glooxwrapper::string glooxwrapper::Message::thread() const const glooxwrapper::DelayedDelivery* glooxwrapper::Message::when() const { - const gloox::DelayedDelivery* wrapped = m_Wrapped->when(); - if (wrapped == 0) - return 0; - return new glooxwrapper::DelayedDelivery(wrapped); + return m_DelayedDelivery; } glooxwrapper::MUCRoom::MUCRoom(gloox::MUCRoom* room, bool owned) diff --git a/source/lobby/glooxwrapper/glooxwrapper.h b/source/lobby/glooxwrapper/glooxwrapper.h index 1fe96893a8..caca1be3b7 100644 --- a/source/lobby/glooxwrapper/glooxwrapper.h +++ b/source/lobby/glooxwrapper/glooxwrapper.h @@ -508,7 +508,8 @@ namespace glooxwrapper private: gloox::Message* m_Wrapped; bool m_Owned; - glooxwrapper::JID* m_From; + glooxwrapper::JID m_From; + glooxwrapper::DelayedDelivery* m_DelayedDelivery; public: Message(gloox::Message* wrapped, bool owned); ~Message();