tdf#102688: prevent leaking of VirtualDevice instances.
Change-Id: I6fb8e5b7fc5c0cef8f7ab1f93f5096ad588d57c7
Reviewed-on: https://gerrit.libreoffice.org/33601
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Kohei Yoshida <libreoffice@kohei.us>
diff --git a/editeng/source/editeng/impedit.hxx b/editeng/source/editeng/impedit.hxx
index 35121b5..ffcda87 100644
--- a/editeng/source/editeng/impedit.hxx
+++ b/editeng/source/editeng/impedit.hxx
@@ -420,6 +420,7 @@ private:
VclPtr< VirtualDevice> pVirtDev;
VclPtr< OutputDevice > pRefDev;
VclPtr<VirtualDevice> mpOwnDev;
svtools::ColorConfig* pColorConfig;
mutable SvtCTLOptions* pCTLOptions;
diff --git a/editeng/source/editeng/impedit2.cxx b/editeng/source/editeng/impedit2.cxx
index 1c56dfb..5bbb325 100644
--- a/editeng/source/editeng/impedit2.cxx
+++ b/editeng/source/editeng/impedit2.cxx
@@ -176,6 +176,7 @@ ImpEditEngine::~ImpEditEngine()
bDowning = true;
SetUpdateMode( false );
mpOwnDev.disposeAndClear();
pVirtDev.disposeAndClear();
delete pEmptyItemSet;
delete pUndoManager;
@@ -207,7 +208,8 @@ void ImpEditEngine::SetRefMapMode( const MapMode& rMapMode )
if ( GetRefDevice()->GetMapMode() == rMapMode )
return;
pRefDev = VclPtr<VirtualDevice>::Create();
mpOwnDev = VclPtr<VirtualDevice>::Create();
pRefDev = mpOwnDev;
pRefDev->SetMapMode( MapUnit::MapTwip );
SetRefDevice( pRefDev );