mirror of
https://github.com/actix/actix-extras.git
synced 2024-11-28 01:32:57 +01:00
fix node::insert() method, missing next element
This commit is contained in:
parent
764103566d
commit
f40153fca4
@ -208,13 +208,14 @@ impl<T> Node<T> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn insert<I>(&mut self, next: &mut Node<I>) {
|
fn insert<I>(&mut self, next_el: &mut Node<I>) {
|
||||||
unsafe {
|
unsafe {
|
||||||
let next: *mut Node<T> = next as *const _ as *mut _;
|
let next: *mut Node<T> = next_el as *const _ as *mut _;
|
||||||
|
|
||||||
if let Some(ref mut next2) = self.next {
|
if let Some(next2) = self.next {
|
||||||
let n = next2.as_mut().unwrap();
|
let n = next2.as_mut().unwrap();
|
||||||
n.prev = Some(next);
|
n.prev = Some(next);
|
||||||
|
next_el.next = Some(next2 as *mut _);
|
||||||
}
|
}
|
||||||
self.next = Some(next);
|
self.next = Some(next);
|
||||||
|
|
||||||
@ -226,13 +227,13 @@ impl<T> Node<T> {
|
|||||||
fn remove(&mut self) {
|
fn remove(&mut self) {
|
||||||
unsafe {
|
unsafe {
|
||||||
self.element = ptr::null_mut();
|
self.element = ptr::null_mut();
|
||||||
let mut next = self.next.take();
|
let next = self.next.take();
|
||||||
let mut prev = self.prev.take();
|
let prev = self.prev.take();
|
||||||
|
|
||||||
if let Some(ref mut prev) = prev {
|
if let Some(prev) = prev {
|
||||||
prev.as_mut().unwrap().next = next;
|
prev.as_mut().unwrap().next = next;
|
||||||
}
|
}
|
||||||
if let Some(ref mut next) = next {
|
if let Some(next) = next {
|
||||||
next.as_mut().unwrap().prev = prev;
|
next.as_mut().unwrap().prev = prev;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user