[Libreoffice-commits] core.git: Branch 'libreoffice-4-2' - sfx2/source

Caolán McNamara caolanm at redhat.com
Thu May 22 06:32:38 PDT 2014


 sfx2/source/doc/sfxbasemodel.cxx |    5 +++++
 1 file changed, 5 insertions(+)

New commits:
commit d0cefa6fc9b6beb61c021637f5967af85429b5d4
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Fri May 16 16:36:13 2014 +0100

    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 at redhat.com>
    Reviewed-by: Michael Stahl <mstahl at redhat.com>

diff --git a/sfx2/source/doc/sfxbasemodel.cxx b/sfx2/source/doc/sfxbasemodel.cxx
index 1de92d6..67096db 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;
 }
 
 //________________________________________________________________________________________________________


More information about the Libreoffice-commits mailing list