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:12 -0400 |
commit | 6cf78c72be5f8f1b0a037b03a6fc63cbace0a2d9 (patch) | |
tree | ffb611558d0209c39f2869b46f352e3054038bb9 | |
parent | 3b59ee9402bd0d32cd1036c90ecf457df06b28e8 (diff) |
fdo#51582: Avoid double deletion of a text portion.
Change-Id: Ia1c31cc8122c99a7e37bc285f61f8c5d2779b577
-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 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]; } |