Cursor::set_last was panicking on empty pages
[?]
Feb 21, 2021, 7:15 PM
6BG65Y2PPKIARIAK57ZUQTA6LXW3TUD6I6FTGZH23V4J3EAMHOXQCDependencies
- [2]
LSQ6V7M6Cleanup + docs - [3]
OP6SVMODResetting history - [4]
ESUI5EUZMaking as_page() unsafe - [5]
OTWDDJE7Trait/type cleanup - [6]
HN6Z5DU4Cleanup - [7]
WS4ZQM4RDebugging, tests, etc. - [8]
OFINGD26implementing prev() on cursors (+ some cleanup)
Change contents
- replacement in sanakirja-core/src/btree/cursor.rs at line 214[3.68135]→[2.19851:19950](∅→∅),[3.11688]→[3.68404:68443](∅→∅),[2.19950]→[3.68404:68443](∅→∅),[3.35118]→[3.68404:68443](∅→∅),[3.8621]→[3.68404:68443](∅→∅),[3.25312]→[3.68404:68443](∅→∅),[3.68404]→[3.68404:68443](∅→∅),[3.11744]→[3.68443:68466](∅→∅),[3.68443]→[3.68443:68466](∅→∅),[3.68466]→[3.11745:11830](∅→∅),[3.11830]→[3.15584:15635](∅→∅),[3.15635]→[3.11830:11856](∅→∅),[3.11830]→[3.11830:11856](∅→∅),[3.11916]→[3.68653:68672](∅→∅),[3.68653]→[3.68653:68672](∅→∅)
let (k, v, r) = P::current(txn, current.page.as_page(), &mut current.cursor).unwrap();last_match = Some((k, v));if r > 0 {let page = txn.load_page(r)?;self.push(PageCursor {cursor: P::cursor_last(&page),page,})if let Some((k, v, r)) = P::current(txn, current.page.as_page(), &mut current.cursor) {last_match = Some((k, v));if r > 0 {let page = txn.load_page(r)?;self.push(PageCursor {cursor: P::cursor_last(&page),page,})} else {break;} - replacement in sanakirja-core/src/btree/cursor.rs at line 226
break;// The page is empty, meaning there's no right or left child.debug_assert!(P::is_init(¤t.cursor));// Assert we're looking at the root.debug_assert_eq!(self.len, 1);// And the root has no child.debug_assert_eq!(P::right_child(current.page.as_page(), ¤t.cursor), 0);return Ok(None);