about summary refs log tree commit diff
diff options
context:
space:
mode:
authorjoboet <jonasboettiger@icloud.com>2023-03-29 10:52:48 +0200
committerjoboet <jonasboettiger@icloud.com>2023-03-29 10:52:48 +0200
commitf6bde0352b52eb3b31c78b7abd70c1be396ccb0f (patch)
tree2bd9c38d27c9a57d9228a835a5c281a7854e8887
parentfdbf109b635d8928b7b47570f2a8f00ec9d39d94 (diff)
downloadrust-f6bde0352b52eb3b31c78b7abd70c1be396ccb0f.tar.gz
rust-f6bde0352b52eb3b31c78b7abd70c1be396ccb0f.zip
std: use `cvt` to handle errors from `read_entropy` on Hermit
-rw-r--r--library/std/src/sys/hermit/mod.rs12
1 files changed, 3 insertions, 9 deletions
diff --git a/library/std/src/sys/hermit/mod.rs b/library/std/src/sys/hermit/mod.rs
index d0e09890b8b..111150b06e1 100644
--- a/library/std/src/sys/hermit/mod.rs
+++ b/library/std/src/sys/hermit/mod.rs
@@ -80,15 +80,9 @@ pub fn hashmap_random_keys() -> (u64, u64) {
     let mut buf = [0; 16];
     let mut slice = &mut buf[..];
     while !slice.is_empty() {
-        let res = unsafe { abi::read_entropy(slice.as_mut_ptr(), slice.len(), 0) };
-        if res < 0 {
-            panic!(
-                "random key generation failed: {}",
-                crate::io::Error::from_raw_os_error(-res as i32)
-            );
-        } else {
-            slice = &mut slice[res as usize..];
-        }
+        let res = cvt(unsafe { abi::read_entropy(slice.as_mut_ptr(), slice.len(), 0) })
+            .expect("failed to generate random hashmap keys");
+        slice = &mut slice[res as usize..];
     }
 
     let key1 = buf[..8].try_into().unwrap();