From 2c540ee8a461d6f394baf5046a64341aa1655c18 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Wed, 14 Jan 2009 11:41:22 +0100 Subject: 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. --- src/playlist.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') 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); -- cgit v1.2.3