diff options
-rw-r--r-- | amarok/src/playlist.cpp | 11 |
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 ); } } |