Fix seek past EOF panic for some tracks

This commit is contained in:
Sasha Hilton 2018-11-10 21:31:03 +01:00
parent 96557b4ec1
commit 74e0adac15

View file

@ -348,11 +348,16 @@ impl Read for AudioFileStreaming {
impl Seek for AudioFileStreaming { impl Seek for AudioFileStreaming {
fn seek(&mut self, pos: SeekFrom) -> io::Result<u64> { fn seek(&mut self, pos: SeekFrom) -> io::Result<u64> {
self.position = try!(self.read_file.seek(pos)); self.position = try!(self.read_file.seek(pos));
// Do not seek past EOF
if (self.position as usize % CHUNK_SIZE) != 0 {
// Notify the fetch thread to get the correct block // Notify the fetch thread to get the correct block
// This can fail if fetch thread has completed, in which case the // This can fail if fetch thread has completed, in which case the
// block is ready. Just ignore the error. // block is ready. Just ignore the error.
let _ = self.seek.unbounded_send(self.position); let _ = self.seek.unbounded_send(self.position);
} else {
warn!("Trying to seek past EOF");
}
Ok(self.position) Ok(self.position)
} }
} }