summaryrefslogtreecommitdiff
path: root/vcl/source
diff options
context:
space:
mode:
authorJan-Marek Glogowski <jan-marek.glogowski@extern.cib.de>2019-11-13 03:45:38 +0100
committerJan-Marek Glogowski <glogow@fbihome.de>2019-11-15 12:33:04 +0100
commitf4a2bc0da65695d9744e8b4be20a09c03fb196e0 (patch)
tree296fa8ae90be9fe9a2d54b1ee6b475a144e24e72 /vcl/source
parent761672398d44e4d708ddd2d2257026bdb47c4869 (diff)
tdf#128434 really free the VclPtr<PDFWriterImpl>
This fixes the major reference cycle introduced by my commit b85ff98383942360901b8242cf77366782400426 ("Change PDFWriterImpl into an OutputDevice"), and adds the missing disposeAndClear() call. Maybe it would be better to add a ScopedVclPtr in the PDFWriter class and revert all the other VclPtr<PDFWriterImpl> users back to the original PDFWriterImpl*. The PDFWriter code really doesn't need any of the special VclPtr handling. Change-Id: Ia64fb207ad274d9323e350022f6b8af35c44e9f5 Reviewed-on: https://gerrit.libreoffice.org/82562 Tested-by: Jenkins Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de> (cherry picked from commit 4dd87ccdab80eb094cede538e3d742148df3880a) Reviewed-on: https://gerrit.libreoffice.org/82660
Diffstat (limited to 'vcl/source')
-rw-r--r--vcl/source/gdi/pdfwriter.cxx1
-rw-r--r--vcl/source/gdi/pdfwriter_impl.cxx1
2 files changed, 2 insertions, 0 deletions
diff --git a/vcl/source/gdi/pdfwriter.cxx b/vcl/source/gdi/pdfwriter.cxx
index 4e5a3c14e6a8..9a418917cf26 100644
--- a/vcl/source/gdi/pdfwriter.cxx
+++ b/vcl/source/gdi/pdfwriter.cxx
@@ -34,6 +34,7 @@ PDFWriter::PDFWriter( const PDFWriter::PDFWriterContext& rContext, const css::un
PDFWriter::~PDFWriter()
{
+ xImplementation.disposeAndClear();
}
OutputDevice* PDFWriter::GetReferenceDevice()
diff --git a/vcl/source/gdi/pdfwriter_impl.cxx b/vcl/source/gdi/pdfwriter_impl.cxx
index a63a2152e6b7..83d5c75bc912 100644
--- a/vcl/source/gdi/pdfwriter_impl.cxx
+++ b/vcl/source/gdi/pdfwriter_impl.cxx
@@ -1418,6 +1418,7 @@ void PDFWriterImpl::dispose()
{
if( m_aCipher )
rtl_cipher_destroyARCFOUR( m_aCipher );
+ m_aPages.clear();
VirtualDevice::dispose();
}