@@ -10,7 +10,7 @@ use crate::ptr;
10
10
use crate :: sync:: Arc ;
11
11
use crate :: sys:: fd:: FileDesc ;
12
12
use crate :: sys:: time:: SystemTime ;
13
- use crate :: sys:: { cvt, cvt_r} ;
13
+ use crate :: sys:: { cvt, cvt_p , cvt_r} ;
14
14
use crate :: sys_common:: { AsInner , AsInnerMut , FromInner , IntoInner } ;
15
15
16
16
#[ cfg( any(
@@ -75,7 +75,7 @@ use libc::{
75
75
#[ cfg( any( target_os = "linux" , target_os = "emscripten" , target_os = "l4re" ) ) ]
76
76
use libc:: { dirent64, fstat64, ftruncate64, lseek64, lstat64, off64_t, open64, stat64} ;
77
77
78
- #[ cfg( not( any( target_os = "redox" , target_os = "espidf" ) ) ) ]
78
+ #[ cfg( not( any( target_os = "redox" , target_os = "espidf" , miri ) ) ) ]
79
79
mod dir_fd;
80
80
81
81
// Modern implementation using openat(), unlinkat() and fdopendir()
@@ -1207,8 +1207,8 @@ pub fn readdir(p: &Path) -> io::Result<ReadDir> {
1207
1207
let root = p. to_path_buf ( ) ;
1208
1208
let p = cstr ( p) ?;
1209
1209
unsafe {
1210
- let ptr = libc:: opendir ( p. as_ptr ( ) ) ;
1211
- if ptr . is_null ( ) { Err ( Error :: last_os_error ( ) ) } else { Ok ( ReadDir :: new ( Dir ( ptr) , root) ) }
1210
+ let ptr = cvt_p ( libc:: opendir ( p. as_ptr ( ) ) ) ? ;
1211
+ Ok ( ReadDir :: new ( Dir ( ptr) , root) )
1212
1212
}
1213
1213
}
1214
1214
0 commit comments