File tree 1 file changed +12
-8
lines changed
library/std/src/sys/solid
1 file changed +12
-8
lines changed Original file line number Diff line number Diff line change @@ -175,15 +175,19 @@ impl Iterator for ReadDir {
175
175
type Item = io:: Result < DirEntry > ;
176
176
177
177
fn next ( & mut self ) -> Option < io:: Result < DirEntry > > {
178
- unsafe {
179
- let mut out_dirent = MaybeUninit :: uninit ( ) ;
180
- error:: SolidError :: err_if_negative ( abi:: SOLID_FS_ReadDir (
178
+ let entry = unsafe {
179
+ let mut out_entry = MaybeUninit :: uninit ( ) ;
180
+ match error:: SolidError :: err_if_negative ( abi:: SOLID_FS_ReadDir (
181
181
self . inner . dirp ,
182
- out_dirent. as_mut_ptr ( ) ,
183
- ) )
184
- . ok ( ) ?;
185
- Some ( Ok ( DirEntry { entry : out_dirent. assume_init ( ) , inner : Arc :: clone ( & self . inner ) } ) )
186
- }
182
+ out_entry. as_mut_ptr ( ) ,
183
+ ) ) {
184
+ Ok ( _) => out_entry. assume_init ( ) ,
185
+ Err ( e) if e. as_raw ( ) == abi:: SOLID_ERR_NOTFOUND => return None ,
186
+ Err ( e) => return Some ( Err ( e. as_io_error ( ) ) ) ,
187
+ }
188
+ } ;
189
+
190
+ ( entry. d_name [ 0 ] != 0 ) . then ( || Ok ( DirEntry { entry, inner : Arc :: clone ( & self . inner ) } ) )
187
191
}
188
192
}
189
193
You can’t perform that action at this time.
0 commit comments