diff options
author | Kohei Yoshida <kohei.yoshida@gmail.com> | 2012-07-02 13:27:52 -0400 |
---|---|---|
committer | Kohei Yoshida <kohei.yoshida@gmail.com> | 2012-07-02 13:29:49 -0400 |
commit | efaeb259a719f3fa37e16f393f5c71124ae80a75 (patch) | |
tree | 0a445c1052d7d427ad0811af8064c2e79c97d0cb /editeng | |
parent | f1658c64e0e088d6fddd4fc3416a80e0a952f516 (diff) |
fdo#51582: Avoid double deletion of a text portion.
Change-Id: Ia1c31cc8122c99a7e37bc285f61f8c5d2779b577
Diffstat (limited to 'editeng')
-rw-r--r-- | editeng/source/editeng/impedit3.cxx | 7 |
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]; } |