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