src/lib/VSDXMLParserBase.cpp | 16 ++++------------ src/lib/VSDXMLParserBase.h | 3 ++- 2 files changed, 6 insertions(+), 13 deletions(-)
New commits: commit ed6c411a41b66e2320835a68570eeb21eda4a207 Author: David Tardon <dtar...@redhat.com> Date: Mon Apr 17 13:20:49 2017 +0200 use std::unique_ptr to manage current stencil Change-Id: I62385c2e6a930186fe9469dbd609052f8cfb5a33 diff --git a/src/lib/VSDXMLParserBase.cpp b/src/lib/VSDXMLParserBase.cpp index 917990d..76fa5b3 100644 --- a/src/lib/VSDXMLParserBase.cpp +++ b/src/lib/VSDXMLParserBase.cpp @@ -7,7 +7,6 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -#include <memory> #include <string.h> #include <libxml/xmlIO.h> #include <libxml/xmlstring.h> @@ -24,7 +23,7 @@ using std::shared_ptr; libvisio::VSDXMLParserBase::VSDXMLParserBase() - : m_collector(), m_stencils(), m_currentStencil(0), m_shape(), + : m_collector(), m_stencils(), m_currentStencil(), m_shape(), m_isStencilStarted(false), m_currentStencilID(MINUS_ONE), m_extractStencils(false), m_isInStyles(false), m_currentLevel(0), m_currentShapeLevel(0), m_colours(), m_fieldList(), m_shapeList(), @@ -38,8 +37,6 @@ libvisio::VSDXMLParserBase::VSDXMLParserBase() libvisio::VSDXMLParserBase::~VSDXMLParserBase() { - if (m_currentStencil) - delete m_currentStencil; } // Common functions @@ -1700,9 +1697,7 @@ void libvisio::VSDXMLParserBase::readStencil(xmlTextReaderPtr reader) } else m_currentStencilID = MINUS_ONE; - if (m_currentStencil) - delete m_currentStencil; - m_currentStencil = new VSDStencil(); + m_currentStencil.reset(new VSDStencil()); } void libvisio::VSDXMLParserBase::readForeignData(xmlTextReaderPtr reader) @@ -1928,11 +1923,8 @@ void libvisio::VSDXMLParserBase::handleMasterEnd(xmlTextReaderPtr /* reader */) else { if (m_currentStencil) - { m_stencils.addStencil(m_currentStencilID, *m_currentStencil); - delete m_currentStencil; - } - m_currentStencil = 0; + m_currentStencil.reset(); m_currentStencilID = MINUS_ONE; } } diff --git a/src/lib/VSDXMLParserBase.h b/src/lib/VSDXMLParserBase.h index d53946c..ab8521d 100644 --- a/src/lib/VSDXMLParserBase.h +++ b/src/lib/VSDXMLParserBase.h @@ -11,6 +11,7 @@ #define __VSDXMLPARSERBASE_H__ #include <map> +#include <memory> #include <stack> #include <string> #include <boost/optional.hpp> @@ -38,7 +39,7 @@ protected: // Protected data VSDCollector *m_collector; VSDStencils m_stencils; - VSDStencil *m_currentStencil; + std::unique_ptr<VSDStencil> m_currentStencil; VSDShape m_shape; bool m_isStencilStarted; unsigned m_currentStencilID; commit 06cd52a14cb5d342637e7d6673e5f68ea38638f5 Author: David Tardon <dtar...@redhat.com> Date: Mon Apr 17 13:18:53 2017 +0200 ofz: check if there is a stencil before using it Change-Id: Ib1fa347e007e84a2909449bf0a3bb73a55ca4d4f diff --git a/src/lib/VSDXMLParserBase.cpp b/src/lib/VSDXMLParserBase.cpp index d5a1005..917990d 100644 --- a/src/lib/VSDXMLParserBase.cpp +++ b/src/lib/VSDXMLParserBase.cpp @@ -954,7 +954,7 @@ void libvisio::VSDXMLParserBase::readShape(xmlTextReaderPtr reader) m_shape.clear(); m_shape.m_textFormat = VSD_TEXT_UTF8; - if (m_isStencilStarted) + if (m_isStencilStarted && m_currentStencil) m_currentStencil->setFirstShape(id); const VSDStencil *tmpStencil = m_stencils.getStencil(masterPage); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits