Fix potential invalid memory reference.
[rust-101.git] / solutions / src / list.rs
index 3206982e9de23650084d534107467474105dfad0..c7ae6ad2565651a2628536cce710d2e3cdb1c2c4 100644 (file)
@@ -53,6 +53,8 @@ impl<T> LinkedList<T> {
             if new_last.is_null() {
                 // The list is now empty.
                 self.first = new_last;
+            } else {
+                unsafe { (*new_last).next = ptr::null_mut() };
             }
             let last = unsafe { raw_into_box(last) } ;
             Some(last.data)
@@ -86,6 +88,8 @@ impl<T> LinkedList<T> {
             if new_first.is_null() {
                 // The list is now empty.
                 self.last = new_first;
+            } else {
+                unsafe { (*new_first).prev = ptr::null_mut() };
             }
             let first = unsafe { raw_into_box(first) } ;
             Some(first.data)