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:12 -0400
commit6cf78c72be5f8f1b0a037b03a6fc63cbace0a2d9 (patch)
treeffb611558d0209c39f2869b46f352e3054038bb9
parent3b59ee9402bd0d32cd1036c90ecf457df06b28e8 (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 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];
}