Skip to content

Commit eefbfd3

Browse files
author
dagou
committed
bug fix
1 parent 2b45f05 commit eefbfd3

File tree

1 file changed

+12
-2
lines changed

1 file changed

+12
-2
lines changed

kr2r/src/compact_hash.rs

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -377,10 +377,20 @@ fn read_pageptr_from_file<'a, P: AsRef<Path>>(filename: P) -> Result<PagePtr<'a>
377377
let index = LittleEndian::read_u64(&mmap[0..8]) as usize;
378378
let capacity = LittleEndian::read_u64(&mmap[8..16]) as usize;
379379

380-
let page_data =
380+
let raw_page_data =
381381
unsafe { std::slice::from_raw_parts(mmap.as_ptr().add(16) as *const u32, capacity) };
382382

383-
Ok(PagePtr::new(mmap, index, capacity, page_data))
383+
let first_zero_end = raw_page_data
384+
.iter()
385+
.position(|&x| x == 0)
386+
.map(|pos| pos + 1)
387+
.unwrap_or(capacity);
388+
let page_data = &raw_page_data[..first_zero_end];
389+
390+
// let page_data =
391+
// unsafe { std::slice::from_raw_parts(mmap.as_ptr().add(16) as *const u32, capacity) };
392+
393+
Ok(PagePtr::new(mmap, index, first_zero_end, page_data))
384394
}
385395

386396
impl<'a> CHPage<'a> {

0 commit comments

Comments
 (0)