summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--amarok/src/playlist.cpp11
1 files changed, 7 insertions, 4 deletions
diff --git a/amarok/src/playlist.cpp b/amarok/src/playlist.cpp
index d87c0621..d73ac8de 100644
--- a/amarok/src/playlist.cpp
+++ b/amarok/src/playlist.cpp
@@ -921,12 +921,15 @@ Playlist::updateEntriesStatusAdded( const TQMap<TQString,TQString> &map )
TQMap<TQString,TQPtrList<PlaylistItem>*> uniquecopy( m_uniqueMap );
TQMap<TQString,TQPtrList<PlaylistItem>*>::Iterator it;
- for( it = uniquecopy.begin(); it != uniquecopy.end(); ++it )
+ for( it = uniquecopy.begin(); it != uniquecopy.end(); )
{
- if( map.contains( it.key() ))
+ // remove() may invalidate the iterator, so make a copy and increment
+ // it before modifying the collection
+ TQMap<TQString,TQPtrList<PlaylistItem>*>::Iterator cur = it++;
+ if( map.contains( cur.key() ))
{
- updateEntriesStatusAdded( map[it.key()], it.key() );
- uniquecopy.remove( it );
+ updateEntriesStatusAdded( map[cur.key()], cur.key() );
+ uniquecopy.remove( cur );
}
}