From 6cf78c72be5f8f1b0a037b03a6fc63cbace0a2d9 Mon Sep 17 00:00:00 2001 From: Kohei Yoshida Date: Mon, 2 Jul 2012 13:27:52 -0400 Subject: fdo#51582: Avoid double deletion of a text portion. Change-Id: Ia1c31cc8122c99a7e37bc285f61f8c5d2779b577 --- editeng/source/editeng/impedit3.cxx | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/editeng/source/editeng/impedit3.cxx b/editeng/source/editeng/impedit3.cxx index 3a5ac2b26115..504d7740c329 100644 --- a/editeng/source/editeng/impedit3.cxx +++ b/editeng/source/editeng/impedit3.cxx @@ -896,18 +896,19 @@ sal_Bool ImpEditEngine::CreateLines( sal_uInt16 nPara, sal_uInt32 nStartPosY ) { // Throw away a Portion, if necessary correct the one before, // if the Hyph portion has swallowed a character ... + sal_uInt16 nTmpLen = pPortion->GetLen(); pParaPortion->GetTextPortions().Remove( nTmpPortion ); - if ( nTmpPortion && pPortion->GetLen() ) + if (nTmpPortion && nTmpLen) { nTmpPortion--; TextPortion* pPrev = pParaPortion->GetTextPortions()[nTmpPortion]; DBG_ASSERT( pPrev->GetKind() == PORTIONKIND_TEXT, "Portion?!" ); nTmpWidth -= pPrev->GetSize().Width(); nTmpPos = nTmpPos - pPrev->GetLen(); - pPrev->SetLen( pPrev->GetLen() + pPortion->GetLen() ); + pPrev->SetLen(pPrev->GetLen() + nTmpLen); pPrev->GetSize().Width() = (-1); } - delete pPortion; + DBG_ASSERT( nTmpPortion < pParaPortion->GetTextPortions().Count(), "No more Portions left!" ); pPortion = pParaPortion->GetTextPortions()[nTmpPortion]; } -- cgit v1.2.3