summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKohei Yoshida <kohei.yoshida@gmail.com>2012-07-02 13:27:52 -0400
committerKohei Yoshida <kohei.yoshida@gmail.com>2012-07-02 13:29:49 -0400
commitefaeb259a719f3fa37e16f393f5c71124ae80a75 (patch)
tree0a445c1052d7d427ad0811af8064c2e79c97d0cb
parentf1658c64e0e088d6fddd4fc3416a80e0a952f516 (diff)
fdo#51582: Avoid double deletion of a text portion.
Change-Id: Ia1c31cc8122c99a7e37bc285f61f8c5d2779b577
-rw-r--r--editeng/source/editeng/impedit3.cxx7
1 files changed, 4 insertions, 3 deletions
diff --git a/editeng/source/editeng/impedit3.cxx b/editeng/source/editeng/impedit3.cxx
index 83e568904bfa..87cdda86dd3e 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];
}