different unlink code, probably the same assembly

This commit is contained in:
Janis 2025-02-20 21:51:02 +01:00
parent eb43c29389
commit af8103b843

View file

@ -504,13 +504,15 @@ mod job {
/// assumes job is in joblist /// assumes job is in joblist
pub unsafe fn unlink(&self) { pub unsafe fn unlink(&self) {
unsafe { unsafe {
let link = *self.link_mut(); let mut dummy = None;
if let Some(prev) = link.prev { let Link { prev, next } = *self.link_mut();
prev.as_ref().link_mut().next = link.next;
} *prev
if let Some(next) = link.next { .map(|ptr| &mut ptr.as_ref().link_mut().next)
next.as_ref().link_mut().prev = link.prev; .unwrap_or(&mut dummy) = next;
} *next
.map(|ptr| &mut ptr.as_ref().link_mut().prev)
.unwrap_or(&mut dummy) = prev;
} }
} }