Fix buffer index in compact
Indexes used to be positions in the full file, not in the intermediary buffer.
This commit is contained in:
@@ -22,6 +22,7 @@
|
||||
|
||||
extern crate byteorder;
|
||||
extern crate env_logger;
|
||||
#[macro_use]
|
||||
extern crate grin_core as core;
|
||||
extern crate grin_util as util;
|
||||
extern crate libc;
|
||||
|
||||
+8
-14
@@ -368,13 +368,10 @@ where
|
||||
{
|
||||
let record_len = 32;
|
||||
|
||||
let off_to_rm = pos_to_rm
|
||||
.iter()
|
||||
.map(|&pos| {
|
||||
let shift = self.pruned_nodes.get_shift(pos);
|
||||
(pos - 1 - shift.unwrap()) * record_len
|
||||
})
|
||||
.collect();
|
||||
let off_to_rm = map_vec!(pos_to_rm, |&pos| {
|
||||
let shift = self.pruned_nodes.get_shift(pos).unwrap();
|
||||
(pos - 1 - shift) * record_len
|
||||
});
|
||||
|
||||
self.hash_file.save_prune(
|
||||
tmp_prune_file_hash.clone(),
|
||||
@@ -388,13 +385,10 @@ where
|
||||
{
|
||||
let record_len = T::len() as u64;
|
||||
|
||||
let off_to_rm = leaf_pos_to_rm
|
||||
.iter()
|
||||
.map(|pos| {
|
||||
let shift = self.pruned_nodes.get_leaf_shift(*pos);
|
||||
(pmmr::n_leaves(pos - shift.unwrap()) - 1) * record_len
|
||||
})
|
||||
.collect::<Vec<_>>();
|
||||
let off_to_rm = map_vec!(leaf_pos_to_rm, |pos| {
|
||||
let shift = self.pruned_nodes.get_leaf_shift(*pos);
|
||||
(pmmr::n_leaves(pos - shift.unwrap()) - 1) * record_len
|
||||
});
|
||||
|
||||
self.data_file.save_prune(
|
||||
tmp_prune_file_data.clone(),
|
||||
|
||||
+1
-1
@@ -187,7 +187,7 @@ impl AppendOnlyFile {
|
||||
// in which case we skip
|
||||
let mut buf_start = 0;
|
||||
while prune_offs[prune_pos] >= read && prune_offs[prune_pos] < read + len {
|
||||
let prune_at = prune_offs[prune_pos] as usize;
|
||||
let prune_at = (prune_offs[prune_pos] - read) as usize;
|
||||
if prune_at != buf_start {
|
||||
writer.write_all(&buf[buf_start..prune_at])?;
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user