diff --git a/kernel/driver/fs/ext2/src/dir.rs b/kernel/driver/fs/ext2/src/dir.rs index 9f6b8a6b..e3a41ccd 100644 --- a/kernel/driver/fs/ext2/src/dir.rs +++ b/kernel/driver/fs/ext2/src/dir.rs @@ -118,7 +118,6 @@ impl<'a> Iterator for DirentIter<'a> { let dirent: &Dirent = bytemuck::from_bytes(&self.block[self.offset..entry_end]); if dirent.ino == 0 { - // TODO skip over empty/padding dirents self.offset += dirent.ent_size as usize; continue; } @@ -329,13 +328,14 @@ impl DirectoryNode { pos += dirent.ent_size as u64; - let name = core::str::from_utf8(name).unwrap(); - entries[entry_count].write(DirectoryEntry { - ty: None, - name: FixedString::from_str(name)?, - }); + if let Ok(name) = core::str::from_utf8(name) { + entries[entry_count].write(DirectoryEntry { + ty: None, + name: FixedString::from_str(name)?, + }); - entry_count += 1; + entry_count += 1; + } } Ok((entry_count, pos))