Kaydet (Commit) e4f5f504 authored tarafından Caolán McNamara's avatar Caolán McNamara Kaydeden (comit) Fridrich Štrba

crash because iterator position wasn't changed in stl conversion

regression from e0284f4b

Here's the original code using the pre stl iterators.

if( !pPara && nDepth > 0 &&  rSet.GetItemState( EE_PARA_NUMBULLET ) == SFX_ITEM_ON &&
    pOutliner->GetDepth( (sal_uInt16) pOutliner->GetAbsPos( (Paragraph*) pList->First() ) ) > 0 )
	pPara = pOutliner->GetParagraph( 0 );  // Put NumBulletItem in outline level 1

Hidden in there is a pList->First() which only gets called if the prior
conditions are true.  pList->First() resets the index of the internal pList
iterator position of pList to 0 i.e. the next call to pList->Prev will now return 0.

The equivalent in the post-stl-conversion code is to jump the reverse_iterator
iter to the last position in the reverse view.

Create a level 10 entry in master view, select level 10, and use the bullets
and numbering dropdown from the side panel to see this crash

Change-Id: I52c22ea52020feb0fb75924f63ebe225be462071
üst d89f5a40
...@@ -236,9 +236,18 @@ bool DrawView::SetAttributes(const SfxItemSet& rSet, ...@@ -236,9 +236,18 @@ bool DrawView::SetAttributes(const SfxItemSet& rSet,
++iter; ++iter;
pPara = iter != aSelList.rend() ? *iter : NULL; pPara = iter != aSelList.rend() ? *iter : NULL;
if( !pPara && nDepth > 0 && rSet.GetItemState( EE_PARA_NUMBULLET ) == SFX_ITEM_ON && bool bJumpToLevel1 = false;
pOutliner->GetDepth( pOutliner->GetAbsPos(*(aSelList.begin())) ) > 0 ) if( !pPara && nDepth > 0 && rSet.GetItemState( EE_PARA_NUMBULLET ) == SFX_ITEM_ON )
pPara = pOutliner->GetParagraph( 0 ); // Put NumBulletItem in outline level 1 bJumpToLevel1 = true;
if (bJumpToLevel1)
{
iter = aSelList.rend();
--iter;
if (pOutliner->GetDepth(pOutliner->GetAbsPos(*iter)) > 0)
pPara = pOutliner->GetParagraph( 0 ); // Put NumBulletItem in outline level 1
}
} }
mpDocSh->SetWaitCursor( false ); mpDocSh->SetWaitCursor( false );
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment