Merge branch 'seed48-no-static-mut' into 'master'
Replace static mut in seed48() See merge request redox-os/relibc!1178
This commit is contained in:
@@ -1248,19 +1248,24 @@ pub unsafe extern "C" fn secure_getenv(name: *const c_char) -> *mut c_char {
|
||||
/// state.
|
||||
#[unsafe(no_mangle)]
|
||||
pub unsafe extern "C" fn seed48(seed16v: *mut c_ushort) -> *mut c_ushort {
|
||||
static mut BUFFER: [c_ushort; 3] = [0; 3];
|
||||
static RETURN_BUFFER: RawCell<[c_ushort; 3]> = RawCell::new([0; 3]);
|
||||
|
||||
let mut params = rand48::params_mut();
|
||||
let mut xsubi = rand48::xsubi_lock();
|
||||
|
||||
// SAFETY: the caller is required to ensure seed16v is convertible to
|
||||
// &[c_ushort; 3].
|
||||
let seed16v_ref: &[c_ushort; 3] = unsafe { slice::from_raw_parts(seed16v, 3) }
|
||||
.try_into()
|
||||
.unwrap();
|
||||
|
||||
unsafe { BUFFER = (*xsubi).into() };
|
||||
// SAFETY: the caller is required to ensure exclusive access to
|
||||
// RETURN_BUFFER.
|
||||
let return_buffer_mut = unsafe { RETURN_BUFFER.unsafe_mut() };
|
||||
*return_buffer_mut = (*xsubi).into();
|
||||
*xsubi = seed16v_ref.into();
|
||||
params.reset();
|
||||
(&raw mut BUFFER).cast()
|
||||
RETURN_BUFFER.as_mut_ptr().cast()
|
||||
}
|
||||
|
||||
unsafe fn copy_kv(
|
||||
|
||||
Reference in New Issue
Block a user