diff --git a/src/header/_fenv/mod.rs b/src/header/_fenv/mod.rs index e404db893b..fe0cc54161 100644 --- a/src/header/_fenv/mod.rs +++ b/src/header/_fenv/mod.rs @@ -33,4 +33,4 @@ pub struct fenv_t { pub mxcsr: u32, pub x87_cw: u16, pub x87_sw: u16, _pad: [u64 #[unsafe(no_mangle)] pub unsafe extern "C" fn fesetexceptflag(fp: *const fexcept_t, e: c_int) -> c_int { if fp.is_null(){return -1} let f=unsafe{*fp as u32&0x3F};let m=e as u32&0x3F;mxcsr_wr((mxcsr_rd()&!m)|(f&m));0 } #[unsafe(no_mangle)] pub unsafe extern "C" fn fesetround(r: c_int) -> c_int { if r!=FE_TONEAREST&&r!=FE_DOWNWARD&&r!=FE_UPWARD&&r!=FE_TOWARDZERO{return -1} mxcsr_wr((mxcsr_rd()&!0x6000)|((r as u32)&0x6000));cw_wr((cw_rd()&!0x0C00)|(((r as u16)>>6)&0x0C00));0 } #[unsafe(no_mangle)] pub unsafe extern "C" fn fetestexcept(e: c_int) -> c_int { ((mxcsr_rd()|sw_rd() as u32)&e as u32)as c_int } -#[unsafe(no_mangle)] pub unsafe extern "C" fn feupdateenv(ep: *const fenv_t) -> c_int { if ep.is_null(){return -1} let c=fetestexcept(FE_ALL_EXCEPT);fesetenv(ep);feraiseexcept(c);0 } +#[unsafe(no_mangle)] pub unsafe extern "C" fn feupdateenv(ep: *const fenv_t) -> c_int { if ep.is_null(){return -1} let c=unsafe{fetestexcept(FE_ALL_EXCEPT)};unsafe{fesetenv(ep)};unsafe{feraiseexcept(c)};0 }