diff --git a/src/fn_call.rs b/src/fn_call.rs index 3eacaaa74e65..50351e2c7045 100644 --- a/src/fn_call.rs +++ b/src/fn_call.rs @@ -213,11 +213,11 @@ pub trait EvalContextExt<'a, 'mir, 'tcx: 'a + 'mir>: crate::MiriEvalContextExt<' "syscall" => { let sys_getrandom = this.eval_path_scalar(&["libc", "SYS_getrandom"])? .expect("Failed to get libc::SYS_getrandom") - .to_usize(this)? as i64; + .to_usize(this)?; // `libc::syscall(NR_GETRANDOM, buf.as_mut_ptr(), buf.len(), GRND_NONBLOCK)` // is called if a `HashMap` is created the regular way (e.g. HashMap). - match this.read_scalar(args[0])?.to_usize(this)? as i64 { + match this.read_scalar(args[0])?.to_usize(this)? { id if id == sys_getrandom => { let ptr = this.read_scalar(args[1])?.to_ptr()?; let len = this.read_scalar(args[2])?.to_usize(this)?; @@ -795,13 +795,15 @@ pub trait EvalContextExt<'a, 'mir, 'tcx: 'a + 'mir>: crate::MiriEvalContextExt<' } } -fn gen_random<'a, 'mir, 'tcx>(this: &mut MiriEvalContext<'a, 'mir, 'tcx>, - len: usize) -> Result, EvalError<'tcx>> { +fn gen_random<'a, 'mir, 'tcx>( + this: &mut MiriEvalContext<'a, 'mir, 'tcx>, + len: usize, +) -> Result, EvalError<'tcx>> { - match this.machine.rng.as_ref() { + match &mut this.machine.rng { Some(rng) => { let mut data = vec![0; len]; - rng.borrow_mut().fill_bytes(&mut data); + rng.fill_bytes(&mut data); Ok(data) } None => { diff --git a/src/lib.rs b/src/lib.rs index 9b4b69b6d707..d185ec610c9a 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -23,7 +23,6 @@ mod stacked_borrows; use std::collections::HashMap; use std::borrow::Cow; -use std::cell::RefCell; use rand::rngs::StdRng; use rand::SeedableRng; @@ -336,7 +335,7 @@ pub struct Evaluator<'tcx> { /// The random number generator to use if Miri /// is running in non-deterministic mode - pub(crate) rng: Option> + pub(crate) rng: Option } impl<'tcx> Evaluator<'tcx> { @@ -350,7 +349,7 @@ impl<'tcx> Evaluator<'tcx> { tls: TlsData::default(), validate, stacked_borrows: stacked_borrows::State::default(), - rng: seed.map(|s| RefCell::new(StdRng::seed_from_u64(s))) + rng: seed.map(|s| StdRng::seed_from_u64(s)) } } }