File tree 1 file changed +7
-11
lines changed
1 file changed +7
-11
lines changed Original file line number Diff line number Diff line change @@ -9,18 +9,14 @@ extern "C" {
9
9
pub fn getrandom_inner ( mut dest : & mut [ MaybeUninit < u8 > ] ) -> Result < ( ) , Error > {
10
10
while !dest. is_empty ( ) {
11
11
let res = unsafe { sys_read_entropy ( dest. as_mut_ptr ( ) . cast :: < u8 > ( ) , dest. len ( ) , 0 ) } ;
12
- // Positive `isize`s can be safely casted to `usize`
13
- if res > 0 && ( res as usize ) <= dest. len ( ) {
14
- dest = & mut dest[ res as usize ..] ;
15
- } else {
16
- let err = if res < 0 {
17
- u32:: try_from ( res. unsigned_abs ( ) )
12
+ match usize:: try_from ( res) {
13
+ Ok ( len) if len > 0 => dest = & mut dest[ res as usize ..] ,
14
+ _ => {
15
+ let err = u32:: try_from ( res. unsigned_abs ( ) )
18
16
. ok ( )
19
- . map_or ( Error :: UNEXPECTED , Error :: from_os_error)
20
- } else {
21
- Error :: UNEXPECTED
22
- } ;
23
- return Err ( err) ;
17
+ . map_or ( Error :: UNEXPECTED , Error :: from_os_error) ;
18
+ return Err ( err) ;
19
+ }
24
20
}
25
21
}
26
22
Ok ( ( ) )
You can’t perform that action at this time.
0 commit comments