Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ core = { version = "1.0", optional = true, package = "rustc-std-workspace-core"
libc = { version = "0.2.62", default-features = false }

[target.'cfg(target_os = "wasi")'.dependencies]
wasi = "0.5"
wasi = "0.7"

[target.wasm32-unknown-unknown.dependencies]
wasm-bindgen = { version = "0.2.29", optional = true }
Expand Down
12 changes: 5 additions & 7 deletions src/wasi.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,9 @@ use core::num::NonZeroU32;
use wasi::wasi_unstable::random_get;

pub fn getrandom_inner(dest: &mut [u8]) -> Result<(), Error> {
let ret = random_get(dest);
if let Some(code) = NonZeroU32::new(ret as u32) {
error!("WASI: random_get failed with return value {}", code);
Err(Error::from(code))
} else {
Ok(()) // Zero means success for WASI
}
// wasi uses NonZeroU16 for error codes
// here compiler is able to eliminate `unwrap`
random_get(dest).map_err(|e| {
NonZeroU32::new(e.get() as u32).unwrap().into()
})
}