diff options
author | Armin Le Grand <alg@apache.org> | 2012-06-26 12:36:31 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2013-04-10 20:17:30 +0100 |
commit | 858c6610f3476bb47bb7b4e621a7ac48a9e34a75 (patch) | |
tree | 8eb898f314aa3c3099b6b2359a2bf8c52e1651dd /sw | |
parent | a6f169433ada74a81b2e3421ea9c68a36c821fbb (diff) |
Resolves: #i120077# Memory leak fixed in ScXMLFontAutoStylePool_Impl
also checked and fixed memory leaks caused by not deleting
SfxStyleSheetIterator instances.
Found by: Chao Huang
Patch by: Chao Huang
Review by: alg
(cherry picked from commit aee8221b3fbe64d8e88aa3a1b630214807cd86f0)
Conflicts:
sc/source/core/data/stlsheet.cxx
sc/source/filter/xml/xmlfonte.cxx
sfx2/source/doc/objcont.cxx
svl/source/items/style.cxx
sw/source/core/unocore/unostyle.cxx
Resolves: #120077# ALG: Reverted r1354011,
adapted all usages of SfxStyleSheetIterator and CreateIterator to use
boost::shared_ptr
(cherry picked from commit ec1819f218b94bed1556653e1b2b816a65da61ef)
Conflicts:
sc/source/core/data/stlsheet.cxx
sc/source/filter/xml/xmlfonte.cxx
sfx2/source/doc/objcont.cxx
svl/inc/svl/style.hxx
svl/source/items/style.cxx
sw/source/core/unocore/unoframe.cxx
sw/source/core/unocore/unostyle.cxx
26937d4d65562b14de0aea59a7b01cc4334f73c1
Change-Id: If99bf3ee399292ec269d68b36ee78ed63f033215
Diffstat (limited to 'sw')
-rw-r--r-- | sw/inc/docstyle.hxx | 3 | ||||
-rw-r--r-- | sw/source/core/unocore/unostyle.cxx | 3 | ||||
-rw-r--r-- | sw/source/ui/app/docstyle.cxx | 5 |
3 files changed, 4 insertions, 7 deletions
diff --git a/sw/inc/docstyle.hxx b/sw/inc/docstyle.hxx index 72ea158d3172..90a049e1ac88 100644 --- a/sw/inc/docstyle.hxx +++ b/sw/inc/docstyle.hxx @@ -208,8 +208,7 @@ public: void SetOrganizerMode( sal_Bool bMode ) { bOrganizer = bMode; } sal_Bool IsOrganizerMode() const { return bOrganizer; } - virtual SfxStyleSheetIterator* CreateIterator( SfxStyleFamily, - sal_uInt16 nMask ); + virtual SfxStyleSheetIteratorPtr CreateIterator( SfxStyleFamily, sal_uInt16 nMask ); SwDoc& GetDoc() const { return rDoc; } diff --git a/sw/source/core/unocore/unostyle.cxx b/sw/source/core/unocore/unostyle.cxx index 49502e0cdc9f..a7d3b1764680 100644 --- a/sw/source/core/unocore/unostyle.cxx +++ b/sw/source/core/unocore/unostyle.cxx @@ -785,7 +785,7 @@ uno::Sequence< OUString > SwXStyleFamily::getElementNames(void) throw( uno::Runt uno::Sequence< OUString > aRet; if(pBasePool) { - SfxStyleSheetIterator* pIterator = pBasePool->CreateIterator(eFamily, SFXSTYLEBIT_ALL); + SfxStyleSheetIteratorPtr pIterator = pBasePool->CreateIterator(eFamily, SFXSTYLEBIT_ALL); sal_uInt16 nCount = pIterator->Count(); aRet.realloc(nCount); OUString* pArray = aRet.getArray(); @@ -795,7 +795,6 @@ uno::Sequence< OUString > SwXStyleFamily::getElementNames(void) throw( uno::Runt SwStyleNameMapper::FillProgName((*pIterator)[i]->GetName(), aString, lcl_GetSwEnumFromSfxEnum ( eFamily ), true ); pArray[i] = OUString ( aString ); } - delete pIterator; } else throw uno::RuntimeException(); diff --git a/sw/source/ui/app/docstyle.cxx b/sw/source/ui/app/docstyle.cxx index 2af3322ea944..934f7174b47b 100644 --- a/sw/source/ui/app/docstyle.cxx +++ b/sw/source/ui/app/docstyle.cxx @@ -2179,10 +2179,9 @@ void SwDocStyleSheetPool::Replace( SfxStyleSheetBase& rSource, } } -SfxStyleSheetIterator* SwDocStyleSheetPool::CreateIterator( - SfxStyleFamily eFam, sal_uInt16 _nMask ) +SfxStyleSheetIteratorPtr SwDocStyleSheetPool::CreateIterator( SfxStyleFamily eFam, sal_uInt16 _nMask ) { - return new SwStyleSheetIterator( this, eFam, _nMask ); + return SfxStyleSheetIteratorPtr(new SwStyleSheetIterator( this, eFam, _nMask )); } void SwDocStyleSheetPool::dispose() |