diff options
author | Noel Grandin <noel.grandin@collabora.co.uk> | 2021-07-21 15:46:14 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2021-07-22 10:40:08 +0200 |
commit | 29df92dc04897796aa47815989c51f59975607fb (patch) | |
tree | aaf240e9d09408de5793b96444b41e165357a3e8 | |
parent | c3dd27d24dec0c581ed731acf8ff3504a4068b03 (diff) |
tdf#143412 CRASH: converting images
Revert "use unique_ptr in SdrEditView::ImpConvertOneObj"
This reverts commit 2ec1dab4693cd45b475f02452114dd96ec0bda1b.
I was wrong, we are no returning ownership here.
Change-Id: Ib3b3b32248d4b56f0a48c658db5d6431b26fc352
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119335
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
(cherry picked from commit 58c6fad213024ef8f162984a66af565ac9ad4b97)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119260
-rw-r--r-- | include/svx/svdedtv.hxx | 2 | ||||
-rw-r--r-- | svx/source/svdraw/svdedtv2.cxx | 9 |
2 files changed, 6 insertions, 5 deletions
diff --git a/include/svx/svdedtv.hxx b/include/svx/svdedtv.hxx index eb815b728cb3..5d834d05bde7 100644 --- a/include/svx/svdedtv.hxx +++ b/include/svx/svdedtv.hxx @@ -125,7 +125,7 @@ protected: // converts an object, when positive it removes the old one from its List // and inserts the new one instead. including Undo. // Nor MarkEntry nor ModelChgBroadcast is created. - SdrObjectUniquePtr ImpConvertOneObj(SdrObject* pObj, bool bPath, bool bLineToArea); + SdrObject* ImpConvertOneObj(SdrObject* pObj, bool bPath, bool bLineToArea); // set both flags: bToTopPossible and bToBtmPossible. // bToTopPossibleDirty and bToBtmPossibleDirty are reset at the same time diff --git a/svx/source/svdraw/svdedtv2.cxx b/svx/source/svdraw/svdedtv2.cxx index 27df56d91d76..1b27ce7031be 100644 --- a/svx/source/svdraw/svdedtv2.cxx +++ b/svx/source/svdraw/svdedtv2.cxx @@ -1975,7 +1975,7 @@ void SdrEditView::UnGroupMarked() // ConvertToPoly -SdrObjectUniquePtr SdrEditView::ImpConvertOneObj(SdrObject* pObj, bool bPath, bool bLineToArea) +SdrObject* SdrEditView::ImpConvertOneObj(SdrObject* pObj, bool bPath, bool bLineToArea) { SdrObjectUniquePtr pNewObj = pObj->ConvertToPolyObj(bPath, bLineToArea); if (pNewObj) @@ -1985,12 +1985,13 @@ SdrObjectUniquePtr SdrEditView::ImpConvertOneObj(SdrObject* pObj, bool bPath, bo if( bUndo ) AddUndo(GetModel()->GetSdrUndoFactory().CreateUndoReplaceObject(*pObj,*pNewObj)); + // ownership passed into here (despite the UniquePtr indicating that we are returning it) pOL->ReplaceObject(pNewObj.get(), pObj->GetOrdNum()); if( !bUndo ) SdrObject::Free(pObj); } - return pNewObj; + return pNewObj.release(); } void SdrEditView::ImpConvertTo(bool bPath, bool bLineToArea) @@ -2034,10 +2035,10 @@ void SdrEditView::ImpConvertTo(bool bPath, bool bLineToArea) ImpConvertOneObj(pObj,bPath,bLineToArea); } } else { - SdrObjectUniquePtr pNewObj=ImpConvertOneObj(pObj,bPath,bLineToArea); + SdrObject* pNewObj=ImpConvertOneObj(pObj,bPath,bLineToArea); if (pNewObj!=nullptr) { bMrkChg=true; - GetMarkedObjectListWriteAccess().ReplaceMark(SdrMark(pNewObj.release(),pPV),nm); + GetMarkedObjectListWriteAccess().ReplaceMark(SdrMark(pNewObj,pPV),nm); } } } |