Fixing a double-free of roots after deletions (the root was freed both by handle_merge and by update_root)
[?]
Feb 9, 2021, 9:18 PM
WAKPPBKONQUA3G7HWH52ZKYG5PLZEAG3HFAYGIYLA4NVEPRZUQEACDependencies
- [2]
OFINGD26implementing prev() on cursors (+ some cleanup) - [3]
W26CFMAQImproving safety of cursors - [4]
OP6SVMODResetting history - [5]
QEUTVAZ4Splitting btree::page - [6]
UUUVNC4DDebugging/cleanup around cursors - [7]
OTWDDJE7Trait/type cleanup
Change contents
- edit in sanakirja-core/src/btree/del.rs at line 393
debug!("handle_merge for level {:?}, freed {:?}",cursor.pointer(),freed); - replacement in sanakirja-core/src/btree/del.rs at line 399
free[cursor.pointer() + 1] = freed;free[cursor.pointer()] = freed; - replacement in sanakirja-core/src/btree/del.rs at line 543[3.38675]→[3.38675:38716](∅→∅),[3.38716]→[3.491:535](∅→∅),[3.535]→[3.38716:38748](∅→∅),[3.38716]→[3.38716:38748](∅→∅),[3.38748]→[2.10591:10625](∅→∅),[2.10625]→[3.38775:38785](∅→∅),[3.38775]→[3.38775:38785](∅→∅)
Put::Ok(Ok { page, freed }) => {debug!("ok freed {:?}", freed);free[0][0] = freed;db.db = page.0.offset}Put::Ok(Ok { page, .. }) => db.db = page.0.offset, - replacement in sanakirja-core/src/btree/del.rs at line 549
freed,.. - edit in sanakirja-core/src/btree/del.rs at line 551
debug!("split freed {:?}", freed);free[0][0] = freed;