diff --git a/library/std/src/sys/fs/uefi.rs b/library/std/src/sys/fs/uefi.rs index 1c65e3e2b155..8339d835dd1c 100644 --- a/library/std/src/sys/fs/uefi.rs +++ b/library/std/src/sys/fs/uefi.rs @@ -160,7 +160,15 @@ impl Iterator for ReadDir { fn next(&mut self) -> Option> { match self.0.read_dir_entry() { Ok(None) => None, - Ok(Some(x)) => Some(Ok(DirEntry::from_uefi(x, self.0.path()))), + Ok(Some(x)) => { + let temp = DirEntry::from_uefi(x, self.0.path()); + // Ignore "." and "..". This is how ReadDir behaves in Unix. + if temp.file_name == "." || temp.file_name == ".." { + self.next() + } else { + Some(Ok(temp)) + } + } Err(e) => Some(Err(e)), } }