From a0c42a13de26d5b5cf070b452ebf93b831e0916d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= Date: Tue, 29 Sep 2015 10:25:48 +0100 Subject: [PATCH] coverity#1325071 Resource leak Change-Id: If045233eeb0d8f6fab89dff4c4307a3b8bde5a92 --- svx/source/svdraw/svdotxed.cxx | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/svx/source/svdraw/svdotxed.cxx b/svx/source/svdraw/svdotxed.cxx index 4e070276ae6d..149a1bbc6bdf 100644 --- a/svx/source/svdraw/svdotxed.cxx +++ b/svx/source/svdraw/svdotxed.cxx @@ -278,8 +278,6 @@ void SdrTextObj::TakeTextEditArea(Size* pPaperMin, Size* pPaperMax, Rectangle* p void SdrTextObj::EndTextEdit(SdrOutliner& rOutl) { - OutlinerParaObject* pNewText = NULL; - if(rOutl.IsModified()) { @@ -287,7 +285,8 @@ void SdrTextObj::EndTextEdit(SdrOutliner& rOutl) rOutl.UpdateFields(); sal_Int32 nParaAnz = rOutl.GetParagraphCount(); - pNewText = rOutl.CreateParaObject( 0, nParaAnz ); + bool bNewTextTransferred = false; + OutlinerParaObject* pNewText = rOutl.CreateParaObject( 0, nParaAnz ); // need to end edit mode early since SetOutlinerParaObject already // uses GetCurrentBoundRect() which needs to take the text into account @@ -298,10 +297,17 @@ void SdrTextObj::EndTextEdit(SdrOutliner& rOutl) if (IsChainable() && GetTextChain()->GetSwitchingToNextBox(this)) { GetTextChain()->SetSwitchingToNextBox(this, false); if( getActiveText() ) + { getActiveText()->SetOutlinerParaObject( pNewText); + bNewTextTransferred = true; + } } else { // If we are not doing in-chaining switching just set the ParaObject SetOutlinerParaObject(pNewText); + bNewTextTransferred = true; } + + if (!bNewTextTransferred) + delete pNewText; } /* Beginning Chaining-related code */