From af8103b843ba38552d8da3ef304089f67d65b7f9 Mon Sep 17 00:00:00 2001 From: Janis <janis@nirgendwo.xyz> Date: Thu, 20 Feb 2025 21:51:02 +0100 Subject: [PATCH] different unlink code, probably the same assembly --- src/praetor/mod.rs | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/praetor/mod.rs b/src/praetor/mod.rs index 2871990..32fdf8d 100644 --- a/src/praetor/mod.rs +++ b/src/praetor/mod.rs @@ -504,13 +504,15 @@ mod job { /// assumes job is in joblist pub unsafe fn unlink(&self) { unsafe { - let link = *self.link_mut(); - if let Some(prev) = link.prev { - prev.as_ref().link_mut().next = link.next; - } - if let Some(next) = link.next { - next.as_ref().link_mut().prev = link.prev; - } + let mut dummy = None; + let Link { prev, next } = *self.link_mut(); + + *prev + .map(|ptr| &mut ptr.as_ref().link_mut().next) + .unwrap_or(&mut dummy) = next; + *next + .map(|ptr| &mut ptr.as_ref().link_mut().prev) + .unwrap_or(&mut dummy) = prev; } }