From d13fb3f42b7f0a6cb5d447fc93205295e62961a5 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Wed, 27 Mar 2019 21:31:18 -0600 Subject: [PATCH] Fix panic in sigaction --- src/header/signal/mod.rs | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/header/signal/mod.rs b/src/header/signal/mod.rs index b4b8989c05..f3c0620363 100644 --- a/src/header/signal/mod.rs +++ b/src/header/signal/mod.rs @@ -74,15 +74,14 @@ pub unsafe extern "C" fn sigaction( act: *const sigaction, oact: *mut sigaction, ) -> c_int { - let mut _sigaction = None; - let ptr = if !act.is_null() { - _sigaction = Some((*act).clone()); - _sigaction.as_mut().unwrap().sa_flags |= SA_RESTORER as c_ulong; - _sigaction.as_mut().unwrap() as *mut _ + let act_opt = if !act.is_null() { + let mut act_clone = (*act).clone(); + act_clone.sa_flags |= SA_RESTORER as c_ulong; + Some(act_clone) } else { - ptr::null_mut() + None }; - Sys::sigaction(sig, ptr, oact) + Sys::sigaction(sig, act_opt.map_or(ptr::null_mut(), |x| &x), oact) } #[no_mangle]