diff --git a/src/kernel/exception.rs b/src/kernel/exception.rs index 0cf5921..de4defe 100644 --- a/src/kernel/exception.rs +++ b/src/kernel/exception.rs @@ -65,16 +65,12 @@ fn syscall(machine: &mut Machine, system: &mut System) -> Result Ok(MachineOk::Shutdown), SC_EXIT => { - match &system.get_thread_manager().g_current_thread { - Some(th) => { - let th = Rc::clone(th); - system.get_thread_manager().thread_finish(machine, th); - Ok(MachineOk::Ok) - }, - None => { - Err("Current thread is None".into()) - } - } + let th = match &system.get_thread_manager().g_current_thread { + Some(th) => th, + None => Err("Current thread is None".into()) + }?; + system.get_thread_manager().thread_finish(machine, th); + Ok(MachineOk::Ok) }, SC_EXEC => todo!(), SC_JOIN => todo!(),