Cppcheck Dangerous iterator usage after erase()-method
Markus Mohrhard
markus.mohrhard at googlemail.com
Sat Sep 15 12:13:55 PDT 2012
Hey,
>
> Here are the lines:
> 178 void SwBlink::FrmDelete( const SwRootFrm* pRoot )
> 179 {
> 180 for( SwBlinkList::iterator it = aList.begin(); it !=
> aList.end(); )
> 181 {
> 182 if( pRoot == (*it).GetRootFrm() )
> 183 aList.erase( it );
> 184 else
> 185 ++it;
> 186 }
> 187 }
>
> I must recognize, I don't understand how can it work above all if we go in
> the "if" since there's no increment.
>
> Any idea?
It can't. Line 183 is supposed to be:
aList.erase(it++);
Regards,
Markus
More information about the LibreOffice
mailing list