diff --git a/src/backend/linux_raw/fs/dir.rs b/src/backend/linux_raw/fs/dir.rs index 359f0afe..cfa347d0 100644 --- a/src/backend/linux_raw/fs/dir.rs +++ b/src/backend/linux_raw/fs/dir.rs @@ -136,15 +136,19 @@ impl Dir { } fn read_more(&mut self) -> Option> { + let og_len = self.buf.len(); // Capacity increment currently chosen by wild guess. self.buf .resize(self.buf.capacity() + 32 * size_of::(), 0); - self.pos = 0; let nread = match crate::backend::fs::syscalls::getdents(self.fd.as_fd(), &mut self.buf) { Ok(nread) => nread, - Err(err) => return Some(Err(err)), + Err(err) => { + self.buf.resize(og_len, 0); + return Some(Err(err)); + } }; self.buf.resize(nread, 0); + self.pos = 0; if nread == 0 { None } else {