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