diff options
author | Caolán McNamara <caolanm@redhat.com> | 2014-05-16 16:36:13 +0100 |
---|---|---|
committer | Andras Timar <andras.timar@collabora.com> | 2014-05-22 16:14:14 +0200 |
commit | 01bffda54c7206cb8502b4acde0de377fc53cc75 (patch) | |
tree | a5e92c788230c39edfe0559116c2c6206d1fb122 /sfx2 | |
parent | a987c3ad1844d2f6babde18b73baf9cc6f2f75db (diff) |
valgrind: SfxBaseModel's pImpl of fallback TargetDocument for paste leaks
e.g. repeatedly pasting a metafile into writer and deleting it.
==13369== 342 (232 direct, 110 indirect) bytes in 1 blocks are definitely lost in loss record 19,396 of 22,170
==13369== at 0x4A06965: operator new(unsigned long) (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==13369== by 0x686D72E: SfxBaseModel::SfxBaseModel(SfxObjectShell*) (sfxbasemodel.cxx:518)
==13369== by 0x288CA9C1: SvxUnoDrawingModel::SvxUnoDrawingModel(SdrModel*) (unomod.cxx:255)
==13369== by 0x28961055: SvxDrawingLayerImport(SdrModel*, com::sun::star::uno::Reference<com::sun::star::io::XInputStream> const&, com::sun::star::uno::Reference<com::sun::star::lang::XComponent> const&, char const*) (xmlexport.cxx:164)
==13369== by 0x28960FA2: SvxDrawingLayerImport(SdrModel*, com::sun::star::uno::Reference<com::sun::star::io::XInputStream> const&, com::sun::star::uno::Reference<com::sun::star::lang::XComponent> const&) (xmlexport.cxx:148)
==13369== by 0x2896175E: SvxDrawingLayerImport(SdrModel*, com::sun::star::uno::Reference<com::sun::star::io::XInputStream> const&) (xmlexport.cxx:254)
==13369== by 0x240B1002: SwFEShell::Paste(SvStream&, unsigned short, Point const*) (fecopy.cxx:1333)
==13369== by 0x247B981A: SwTransferable::_PasteSdrFormat(TransferableDataHelper&, SwWrtShell&, unsigned short, Point const*, unsigned char, bool) (swdtflvr.cxx:2207)
==13369== by 0x247B678E: SwTransferable::PasteData(TransferableDataHelper&, SwWrtShell&, unsigned short, unsigned long, unsigned short, bool, bool, Point const*, signed char, bool) (swdtflvr.cxx:1481)
==13369== by 0x247B5AE4: SwTransferable::Paste(SwWrtShell&, TransferableDataHelper&) (swdtflvr.cxx:1150)
==13369== by 0x2488FCCE: SwBaseShell::ExecClpbrd(SfxRequest&) (basesh.cxx:277)
Reference< lang::XComponent > xTargetDocument( xComponent );
if( !xTargetDocument.is() )
{
> xTargetDocument = new SvxUnoDrawingModel( pModel );
pModel->setUnoModel( Reference< XInterface >::query( xTargetDocument ) );
}
(cherry picked from commit fdca15fb864aca975533257d5ee83440992d8a7e)
Conflicts:
sfx2/source/doc/sfxbasemodel.cxx
Change-Id: I3bd0fc983d9b6bdcdc91071a4ec3d2c584397ebf
Reviewed-on: https://gerrit.libreoffice.org/9384
Tested-by: Michael Stahl <mstahl@redhat.com>
Reviewed-by: Michael Stahl <mstahl@redhat.com>
Diffstat (limited to 'sfx2')
-rw-r--r-- | sfx2/source/doc/sfxbasemodel.cxx | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/sfx2/source/doc/sfxbasemodel.cxx b/sfx2/source/doc/sfxbasemodel.cxx index 1de92d66fdc0..67096db7a216 100644 --- a/sfx2/source/doc/sfxbasemodel.cxx +++ b/sfx2/source/doc/sfxbasemodel.cxx @@ -537,6 +537,11 @@ SfxBaseModel::SfxBaseModel( SfxObjectShell *pObjectShell ) SfxBaseModel::~SfxBaseModel() { DBG_DTOR(sfx2_SfxBaseModel,NULL); + //In SvxDrawingLayerImport when !xTargetDocument the fallback SvxUnoDrawingModel created there + //never gets disposed called on it, so m_pData leaks. + IMPL_SfxBaseModel_DataContainer* pData = m_pData; + m_pData = 0; + delete pData; } //________________________________________________________________________________________________________ |