diff options
author | Jochen Nitschke <j.nitschke+logerrit@ok.de> | 2017-06-04 11:33:31 +0200 |
---|---|---|
committer | Jochen Nitschke <j.nitschke+logerrit@ok.de> | 2017-06-04 12:47:55 +0200 |
commit | 453ce05c3951b6459a6450e6ac09377f70ecbc16 (patch) | |
tree | 1dedc2591c6cdc3c77a971c8cd69ebbc17c80d8f | |
parent | 4e547d147d6df7042db58bfa3060140c849493f4 (diff) |
tdf#108324 fix crash: paste from textframe
rAttr references *pC->maCharAttribs[nAttr].get() and assignment of
a unique_ptr is essentially a reset, invalidating the reference.
regression of commit dd891ec422fb35eada219ca7adddbd60d69f1fb7
cppcheck: memleak (false positive)
but manage ownership from start
Change-Id: Ica81f0af18e11b32d2f97045961630858c78e9af
Reviewed-on: https://gerrit.libreoffice.org/38382
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Jochen Nitschke <j.nitschke+logerrit@ok.de>
-rw-r--r-- | editeng/source/editeng/editobj.cxx | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/editeng/source/editeng/editobj.cxx b/editeng/source/editeng/editobj.cxx index b215865d0ee3..ed1fdb06136e 100644 --- a/editeng/source/editeng/editobj.cxx +++ b/editeng/source/editeng/editobj.cxx @@ -1429,9 +1429,8 @@ void EditTextObjectImpl::CreateData( SvStream& rIStream ) aNewFontItem.SetFamilyName( GetFontToSubsFontName( hConv ) ); // Replace the existing attribute with a new one. - pC->maCharAttribs[nAttr] = - std::unique_ptr<XEditAttribute>(CreateAttrib(aNewFontItem, rAttr.GetStart(), rAttr.GetEnd())); pPool->Remove(*rAttr.GetItem()); + pC->maCharAttribs[nAttr].reset(CreateAttrib(aNewFontItem, rAttr.GetStart(), rAttr.GetEnd())); XEditAttribute* pNewAttr = pC->maCharAttribs[nAttr].get(); for ( sal_Int32 nChar = pNewAttr->GetStart(); nChar < pNewAttr->GetEnd(); nChar++ ) |