queue/PlaylistControl: fix crash after seek failure

This completes the bug fix commit
2065e3290452377b2931f3129b230c8cc536cbc8; if we clear "queued" then we
must clear "queued_song" as well, or another variant of the assertion
fails.
This commit is contained in:
Max Kellermann 2018-01-05 13:00:24 +01:00
parent e3e90b4b93
commit cab77e35e0
2 changed files with 2 additions and 5 deletions

1
NEWS
View File

@ -1,4 +1,5 @@
ver 0.20.15 (not yet released) ver 0.20.15 (not yet released)
* queue: fix crash after seek failure
* resampler * resampler
- soxr: clear internal state after manual song change - soxr: clear internal state after manual song change
* state file * state file

View File

@ -212,8 +212,6 @@ playlist::SeekSongOrder(PlayerControl &pc, unsigned i, SongTime seek_time)
{ {
assert(queue.IsValidOrder(i)); assert(queue.IsValidOrder(i));
const DetachedSong *queued_song = GetQueuedSong();
pc.LockClearError(); pc.LockClearError();
stop_on_error = true; stop_on_error = true;
error_count = 0; error_count = 0;
@ -226,8 +224,6 @@ playlist::SeekSongOrder(PlayerControl &pc, unsigned i, SongTime seek_time)
playing = true; playing = true;
current = i; current = i;
queued_song = nullptr;
} }
queued = -1; queued = -1;
@ -235,7 +231,7 @@ playlist::SeekSongOrder(PlayerControl &pc, unsigned i, SongTime seek_time)
try { try {
pc.LockSeek(new DetachedSong(queue.GetOrder(i)), seek_time); pc.LockSeek(new DetachedSong(queue.GetOrder(i)), seek_time);
} catch (...) { } catch (...) {
UpdateQueuedSong(pc, queued_song); UpdateQueuedSong(pc, nullptr);
throw; throw;
} }