From ddd854a6970d2900cfd1a792f02dd0651184d33a Mon Sep 17 00:00:00 2001 From: Cyborus04 <87248184+Cyborus04@users.noreply.github.com> Date: Thu, 14 Oct 2021 14:08:51 -0400 Subject: [PATCH 1/2] Use `NonZeroU32::new_unchecked` to convert wasi error --- src/wasi.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/wasi.rs b/src/wasi.rs index 4674f4396..9dd6952d0 100644 --- a/src/wasi.rs +++ b/src/wasi.rs @@ -14,6 +14,8 @@ 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() + // SAFETY: `wasi::Error` is `NonZeroU16` internally, so `e.raw_error()` + // will never return 0 + unsafe { NonZeroU32::new_unchecked(e.raw_error() as u32) }.into() }) } From 3a8c1bf14076bc1cafeb875ef7df2ac60580d925 Mon Sep 17 00:00:00 2001 From: Cyborus04 <87248184+Cyborus04@users.noreply.github.com> Date: Thu, 14 Oct 2021 23:46:05 -0400 Subject: [PATCH 2/2] Consolidate `unsafe` blocks --- src/wasi.rs | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/wasi.rs b/src/wasi.rs index 9dd6952d0..2d413e020 100644 --- a/src/wasi.rs +++ b/src/wasi.rs @@ -12,10 +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 - // SAFETY: `wasi::Error` is `NonZeroU16` internally, so `e.raw_error()` - // will never return 0 - unsafe { NonZeroU32::new_unchecked(e.raw_error() as u32) }.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() + }) + } }