Merge pull request #262 from librespot-org/seek-eof

Fix seek past EOF panic for some tracks
This commit is contained in:
Sasha Hilton 2018-11-19 15:03:35 +01:00 committed by GitHub
commit d2cadec419
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

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