sc/inc/textuno.hxx | 8 +++++++- sc/source/filter/xml/XMLTableHeaderFooterContext.cxx | 3 +++ sc/source/filter/xml/XMLTableMasterPageExport.cxx | 15 +++++++++++++++ sc/source/ui/unoobj/textuno.cxx | 7 +++++++ 4 files changed, 32 insertions(+), 1 deletion(-)
New commits: commit 75c956d8ed1a4d8f46af3de079ab1fb68add3b40 Author: Dennis Francis <dennisfrancis...@gmail.com> Date: Mon Nov 30 04:44:43 2015 +0530 fix memory leaks on loading and saving an ods file Change-Id: I3015a0f0254b9546386871cb015f925f0cd792f3 Reviewed-on: https://gerrit.libreoffice.org/20274 Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: Caolán McNamara <caol...@redhat.com> Tested-by: Caolán McNamara <caol...@redhat.com> diff --git a/sc/inc/textuno.hxx b/sc/inc/textuno.hxx index 9a64157..defb6d6 100644 --- a/sc/inc/textuno.hxx +++ b/sc/inc/textuno.hxx @@ -102,6 +102,8 @@ public: throw(css::uno::RuntimeException, std::exception) override; virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() throw(css::uno::RuntimeException, std::exception) override; + + virtual void dispose(); }; // ScHeaderFooterTextData: shared data between sub objects of a ScHeaderFooterTextObj @@ -130,7 +132,9 @@ public: sal_uInt16 GetPart() const { return nPart; } rtl::Reference<ScHeaderFooterContentObj> GetContentObj() const { return rContentObj; } - const EditTextObject* GetTextObject() const { return mpTextObj;} + const EditTextObject* GetTextObject() const { return mpTextObj; } + + void dispose() { rContentObj.clear(); } }; /** @@ -224,6 +228,8 @@ public: throw(css::uno::RuntimeException, std::exception) override; virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() throw(css::uno::RuntimeException, std::exception) override; + + virtual void dispose() { aTextData.dispose(); } }; // derived cursor objects for getImplementation and getText/getStart/getEnd diff --git a/sc/source/filter/xml/XMLTableHeaderFooterContext.cxx b/sc/source/filter/xml/XMLTableHeaderFooterContext.cxx index ba0e16e..2ba8ed0 100644 --- a/sc/source/filter/xml/XMLTableHeaderFooterContext.cxx +++ b/sc/source/filter/xml/XMLTableHeaderFooterContext.cxx @@ -25,6 +25,7 @@ #include <comphelper/extract.hxx> #include "unonames.hxx" +#include "textuno.hxx" using namespace ::com::sun::star; using namespace ::com::sun::star::uno; @@ -99,6 +100,8 @@ XMLTableHeaderFooterContext::XMLTableHeaderFooterContext( SvXMLImport& rImport, XMLTableHeaderFooterContext::~XMLTableHeaderFooterContext() { + rtl::Reference<ScHeaderFooterContentObj> pImp = ScHeaderFooterContentObj::getImplementation( xHeaderFooterContent ); + pImp->dispose(); } SvXMLImportContext *XMLTableHeaderFooterContext::CreateChildContext( diff --git a/sc/source/filter/xml/XMLTableMasterPageExport.cxx b/sc/source/filter/xml/XMLTableMasterPageExport.cxx index 260deea..f9e42ad 100644 --- a/sc/source/filter/xml/XMLTableMasterPageExport.cxx +++ b/sc/source/filter/xml/XMLTableMasterPageExport.cxx @@ -23,9 +23,11 @@ #include <com/sun/star/beans/XPropertySet.hpp> #include "XMLTableMasterPageExport.hxx" #include <comphelper/extract.hxx> +#include <rtl/ref.hxx> #include "unonames.hxx" #include "xmlexprt.hxx" +#include "textuno.hxx" using namespace ::com::sun::star; using namespace ::com::sun::star::uno; @@ -105,6 +107,14 @@ void XMLTableMasterPageExport::exportHeaderFooter(const css::uno::Reference < cs } } +void lcl_DisposeXHeaderFooterContent( Reference < sheet::XHeaderFooterContent > xHFContent ) +{ + if( !xHFContent.is() ) + return; + rtl::Reference<ScHeaderFooterContentObj> pImp = ScHeaderFooterContentObj::getImplementation( xHFContent ); + pImp->dispose(); +} + void XMLTableMasterPageExport::exportMasterPageContent( const Reference < XPropertySet > & rPropSet, bool bAutoStyles ) @@ -162,6 +172,11 @@ void XMLTableMasterPageExport::exportMasterPageContent( exportHeaderFooter( xFooterLeft, XML_FOOTER_LEFT, bLeftFooter ); } + + lcl_DisposeXHeaderFooterContent( xHeader ); + lcl_DisposeXHeaderFooterContent( xHeaderLeft ); + lcl_DisposeXHeaderFooterContent( xFooter ); + lcl_DisposeXHeaderFooterContent( xFooterLeft ); } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/ui/unoobj/textuno.cxx b/sc/source/ui/unoobj/textuno.cxx index 736e961..1ea1215 100644 --- a/sc/source/ui/unoobj/textuno.cxx +++ b/sc/source/ui/unoobj/textuno.cxx @@ -174,6 +174,13 @@ rtl::Reference<ScHeaderFooterContentObj> ScHeaderFooterContentObj::getImplementa return pRet; } +void ScHeaderFooterContentObj::dispose() +{ + mxLeftText->dispose(); + mxCenterText->dispose(); + mxRightText->dispose(); +} + ScHeaderFooterTextData::ScHeaderFooterTextData( rtl::Reference<ScHeaderFooterContentObj> const & rContent, sal_uInt16 nP, const EditTextObject* pTextObj) : mpTextObj(pTextObj ? pTextObj->Clone() : nullptr),
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits