diff options
-rw-r--r-- | compilerplugins/clang/useuniqueptr.cxx | 4 | ||||
-rw-r--r-- | editeng/source/uno/unoforou.cxx | 23 | ||||
-rw-r--r-- | include/editeng/unoforou.hxx | 6 |
3 files changed, 13 insertions, 20 deletions
diff --git a/compilerplugins/clang/useuniqueptr.cxx b/compilerplugins/clang/useuniqueptr.cxx index c7f76fe6b962..0c82307a9da8 100644 --- a/compilerplugins/clang/useuniqueptr.cxx +++ b/compilerplugins/clang/useuniqueptr.cxx @@ -49,6 +49,10 @@ public: // and the logic depends on overriding methods. if (fn == SRCDIR "/sfx2/source/dialog/tabdlg.cxx") return; + // pLongArr is being deleted here because we temporarily overwrite a pointer to someone else's buffer, with a pointer + // to our own buffer + if (fn == SRCDIR "/editeng/source/misc/txtrange.cxx") + return; TraverseDecl(compiler.getASTContext().getTranslationUnitDecl()); } diff --git a/editeng/source/uno/unoforou.cxx b/editeng/source/uno/unoforou.cxx index 3db46f1a83e9..fa8e08ed16d7 100644 --- a/editeng/source/uno/unoforou.cxx +++ b/editeng/source/uno/unoforou.cxx @@ -109,8 +109,7 @@ SfxItemSet SvxOutlinerForwarder::GetAttribs( const ESelection& rSel, EditEngineA else { // no, we need delete the old cache - delete mpAttribsCache; - mpAttribsCache = nullptr; + mpAttribsCache.reset(); } } @@ -122,7 +121,7 @@ SfxItemSet SvxOutlinerForwarder::GetAttribs( const ESelection& rSel, EditEngineA if( EditEngineAttribs::All == nOnlyHardAttrib ) { - mpAttribsCache = new SfxItemSet( aSet ); + mpAttribsCache.reset(new SfxItemSet( aSet )); maAttribCacheSelection = rSel; } @@ -146,12 +145,11 @@ SfxItemSet SvxOutlinerForwarder::GetParaAttribs( sal_Int32 nPara ) const else { // no, we need delete the old cache - delete mpParaAttribsCache; - mpParaAttribsCache = nullptr; + mpParaAttribsCache.reset(); } } - mpParaAttribsCache = new SfxItemSet( rOutliner.GetParaAttribs( nPara ) ); + mpParaAttribsCache.reset(new SfxItemSet( rOutliner.GetParaAttribs( nPara ) )); mnParaAttribsCache = nPara; EditEngine& rEditEngine = const_cast<EditEngine&>(rOutliner.GetEditEngine()); @@ -253,17 +251,8 @@ SfxItemState SvxOutlinerForwarder::GetItemState( sal_Int32 nPara, sal_uInt16 nWh void SvxOutlinerForwarder::flushCache() { - if( mpAttribsCache ) - { - delete mpAttribsCache; - mpAttribsCache = nullptr; - } - - if( mpParaAttribsCache ) - { - delete mpParaAttribsCache; - mpParaAttribsCache = nullptr; - } + mpAttribsCache.reset(); + mpParaAttribsCache.reset(); } LanguageType SvxOutlinerForwarder::GetLanguage( sal_Int32 nPara, sal_Int32 nIndex ) const diff --git a/include/editeng/unoforou.hxx b/include/editeng/unoforou.hxx index b04fdcdb59f5..0eb490b466fd 100644 --- a/include/editeng/unoforou.hxx +++ b/include/editeng/unoforou.hxx @@ -22,8 +22,8 @@ #include <editeng/unoedsrc.hxx> #include <editeng/editengdllapi.h> - #include <editeng/editdata.hxx> +#include <memory> class Outliner; @@ -37,14 +37,14 @@ private: /** this pointer may be null or point to an item set for the attribs of the selection maAttribsSelection */ - mutable SfxItemSet* mpAttribsCache; + mutable std::unique_ptr<SfxItemSet> mpAttribsCache; /** if we have a cached attribute item set, this is the selection of it */ mutable ESelection maAttribCacheSelection; /** this pointer may be null or point to an item set for the paragraph mnParaAttribsCache */ - mutable SfxItemSet* mpParaAttribsCache; + mutable std::unique_ptr<SfxItemSet> mpParaAttribsCache; /** if we have a cached para attribute item set, this is the paragraph of it */ mutable sal_Int32 mnParaAttribsCache; |