Skip to content

Commit 06f70a6

Browse files
committed
hermit: Clarify isize -> usize conversion.
1 parent 33051f5 commit 06f70a6

File tree

1 file changed

+7
-11
lines changed

1 file changed

+7
-11
lines changed

src/hermit.rs

+7-11
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,14 @@ extern "C" {
99
pub fn getrandom_inner(mut dest: &mut [MaybeUninit<u8>]) -> Result<(), Error> {
1010
while !dest.is_empty() {
1111
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())
1816
.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+
}
2420
}
2521
}
2622
Ok(())

0 commit comments

Comments
 (0)