Kaydet (Commit) 1a412714 authored tarafından Cédric Bosdonnat's avatar Cédric Bosdonnat

fixed crash due to use of STL deque for SwLineRects

üst 99298d61
...@@ -945,13 +945,16 @@ void SwSubsRects::PaintSubsidiary( OutputDevice *pOut, ...@@ -945,13 +945,16 @@ void SwSubsRects::PaintSubsidiary( OutputDevice *pOut,
SwTaggedPDFHelper aTaggedPDFHelper( 0, 0, 0, *pOut ); SwTaggedPDFHelper aTaggedPDFHelper( 0, 0, 0, *pOut );
// Remove all help line that are almost covered (tables) // Remove all help line that are almost covered (tables)
for (SwSubsRects::iterator it = this->begin(); it != this->end(); ++it) SwSubsRects::iterator it = this->begin();
while ( it != this->end() )
{ {
SwLineRect &rLi = *it; SwLineRect &rLi = *it;
const bool bVerticalSubs = rLi.Height() > rLi.Width(); const bool bVerticalSubs = rLi.Height() > rLi.Width();
for (SwSubsRects::iterator itK = it; itK != this->end(); ++itK) SwSubsRects::iterator itK = it;
while ( itK != this->end() )
{ {
bool bRemoved = false;
SwLineRect &rLk = (*itK); SwLineRect &rLk = (*itK);
if ( rLi.SSize() == rLk.SSize() ) if ( rLi.SSize() == rLk.SSize() )
{ {
...@@ -969,6 +972,7 @@ void SwSubsRects::PaintSubsidiary( OutputDevice *pOut, ...@@ -969,6 +972,7 @@ void SwSubsRects::PaintSubsidiary( OutputDevice *pOut,
// don't continue with inner loop any more: // don't continue with inner loop any more:
// the array may shrink! // the array may shrink!
itK = this->end(); itK = this->end();
bRemoved = true;
} }
} }
else else
...@@ -983,11 +987,17 @@ void SwSubsRects::PaintSubsidiary( OutputDevice *pOut, ...@@ -983,11 +987,17 @@ void SwSubsRects::PaintSubsidiary( OutputDevice *pOut,
// don't continue with inner loop any more: // don't continue with inner loop any more:
// the array may shrink! // the array may shrink!
itK = this->end(); itK = this->end();
bRemoved = true;
} }
} }
} }
} }
if ( !bRemoved )
++itK;
} }
++it;
} }
if ( pRects && (!pRects->empty()) ) if ( pRects && (!pRects->empty()) )
...@@ -1008,7 +1018,7 @@ void SwSubsRects::PaintSubsidiary( OutputDevice *pOut, ...@@ -1008,7 +1018,7 @@ void SwSubsRects::PaintSubsidiary( OutputDevice *pOut,
pOut->SetDrawMode( 0 ); pOut->SetDrawMode( 0 );
} }
for (SwSubsRects::iterator it = this->begin(); it != this->end(); ++it) for (it = this->begin(); it != this->end(); ++it)
{ {
SwLineRect &rLRect = (*it); SwLineRect &rLRect = (*it);
// Add condition <!rLRect.IsLocked()> to prevent paint of locked subsidiary lines. // Add condition <!rLRect.IsLocked()> to prevent paint of locked subsidiary lines.
......
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