diff --git a/core/storage/sqlite3_ondisk.rs b/core/storage/sqlite3_ondisk.rs index e03e29729..d085128d4 100644 --- a/core/storage/sqlite3_ondisk.rs +++ b/core/storage/sqlite3_ondisk.rs @@ -495,6 +495,7 @@ fn finish_read_page( pub fn begin_write_btree_page(pager: &Pager, page: &Rc>) -> Result<()> { let page_source = &pager.page_io; let page_finish = page.clone(); + // page.borrow() returns RefCell which remains active for the entire begin_write_btree_page function let page = page.borrow(); let contents = page.contents.read().unwrap(); @@ -505,6 +506,7 @@ pub fn begin_write_btree_page(pager: &Pager, page: &Rc>) -> Result Box::new(move |bytes_written: i32| { let buf_copy = buf_copy.clone(); let buf_len = buf_copy.borrow().len(); + // requires a mutable borrow of the page_finish's RefCell page_finish.borrow_mut().clear_dirty(); if bytes_written < buf_len as i32 { log::error!("wrote({bytes_written}) less than expected({buf_len})"); diff --git a/database.db b/database.db new file mode 100644 index 000000000..51f2d758f Binary files /dev/null and b/database.db differ