aboutsummaryrefslogtreecommitdiff
path: root/src/wasi.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/wasi.rs')
-rw-r--r--src/wasi.rs12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/wasi.rs b/src/wasi.rs
index 4674f43..2d413e0 100644
--- a/src/wasi.rs
+++ b/src/wasi.rs
@@ -12,8 +12,12 @@ use core::num::NonZeroU32;
use wasi::random_get;
pub fn getrandom_inner(dest: &mut [u8]) -> Result<(), Error> {
- unsafe { random_get(dest.as_mut_ptr(), dest.len()) }.map_err(|e: wasi::Error| {
- // convert wasi's Error into getrandom's NonZeroU32 error
- NonZeroU32::new(e.raw_error() as u32).unwrap().into()
- })
+ unsafe {
+ random_get(dest.as_mut_ptr(), dest.len()).map_err(|e: wasi::Error| {
+ // convert wasi's Error into getrandom's NonZeroU32 error
+ // SAFETY: `wasi::Error` is `NonZeroU16` internally, so `e.raw_error()`
+ // will never return 0
+ NonZeroU32::new_unchecked(e.raw_error() as u32).into()
+ })
+ }
}