aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2015-10-27 23:09:03 +0100
committerMax Kellermann <max@duempel.org>2015-10-27 23:09:03 +0100
commitb78896d64ed9e07d02d1ca95c29adc877b4e52d6 (patch)
tree0a4750ea26d9d814d002a881431b49fbefd99bf5
parente753c924ef7770a6f65cf2cb86a2b403707d62f3 (diff)
downloadmpd-b78896d64ed9e07d02d1ca95c29adc877b4e52d6.tar.gz
mpd-b78896d64ed9e07d02d1ca95c29adc877b4e52d6.tar.xz
mpd-b78896d64ed9e07d02d1ca95c29adc877b4e52d6.zip
player/Control: use CANCEL to clear next_song in Seek()
Assigning nullptr to next_song may disrupt the player thread and render undefined behavior.
-rw-r--r--src/player/Control.cxx6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/player/Control.cxx b/src/player/Control.cxx
index d7352ad57..75742d2cf 100644
--- a/src/player/Control.cxx
+++ b/src/player/Control.cxx
@@ -227,7 +227,11 @@ PlayerControl::Seek(DetachedSong *song, SongTime t)
Lock();
- delete next_song;
+ if (next_song != nullptr)
+ SynchronousCommand(PlayerCommand::CANCEL);
+
+ assert(next_song == nullptr);
+
next_song = song;
seek_time = t;
SynchronousCommand(PlayerCommand::SEEK);