diff options
author | Max Kellermann <max@duempel.org> | 2009-01-14 11:41:22 +0100 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2009-01-14 11:42:45 +0100 |
commit | 2c540ee8a461d6f394baf5046a64341aa1655c18 (patch) | |
tree | 81f7c0af1d99efdf41069775cdee8099e5d5038b /src/playlist.c | |
parent | 2af1742fcf99e32129c55334a08fba22f28dcbc7 (diff) | |
download | mpd-2c540ee8a461d6f394baf5046a64341aa1655c18.tar.gz mpd-2c540ee8a461d6f394baf5046a64341aa1655c18.tar.xz mpd-2c540ee8a461d6f394baf5046a64341aa1655c18.zip |
playlist: safely search the playlist for deleted song
When a song file is deleted during database update, all pointers to it
must be removed from the playlist. The "for" loop in
deleteASongFromPlaylist() did not deal with multiple copies of the
deleted song properly, and left instances of the (to-be-invalidated)
pointer in. Fix this by reversing the loop.
Diffstat (limited to 'src/playlist.c')
-rw-r--r-- | src/playlist.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/playlist.c b/src/playlist.c index e680af1e6..bc01700aa 100644 --- a/src/playlist.c +++ b/src/playlist.c @@ -764,7 +764,7 @@ deleteASongFromPlaylist(const struct song *song) if (NULL == playlist.songs) return; - for (unsigned i = 0; i < playlist.length; i++) + for (int i = playlist.length - 1; i >= 0; --i) if (song == playlist.songs[i]) deleteFromPlaylist(i); |