diff options
Diffstat (limited to 'src/compat.rs')
-rw-r--r-- | src/compat.rs | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/compat.rs b/src/compat.rs index 6a8802d..423bd95 100644 --- a/src/compat.rs +++ b/src/compat.rs @@ -227,12 +227,14 @@ impl<T: tokio::io::AsyncSeek> futures_io::AsyncSeek for Compat<T> { pos: io::SeekFrom, ) -> Poll<io::Result<u64>> { if self.seek_pos != Some(pos) { + // Ensure previous seeks have finished before starting a new one + ready!(self.as_mut().project().inner.poll_complete(cx))?; self.as_mut().project().inner.start_seek(pos)?; *self.as_mut().project().seek_pos = Some(pos); } let res = ready!(self.as_mut().project().inner.poll_complete(cx)); *self.as_mut().project().seek_pos = None; - Poll::Ready(res.map(|p| p as u64)) + Poll::Ready(res) } } @@ -255,7 +257,7 @@ impl<T: futures_io::AsyncSeek> tokio::io::AsyncSeek for Compat<T> { }; let res = ready!(self.as_mut().project().inner.poll_seek(cx, pos)); *self.as_mut().project().seek_pos = None; - Poll::Ready(res.map(|p| p as u64)) + Poll::Ready(res) } } |