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;
             }
         }