Fix buffer index in compact

Indexes used to be positions in the full file, not in the
intermediary buffer.
This commit is contained in:
Ignotus Peverell
2018-04-02 21:49:35 +01:00
parent 959b1d3e8d
commit eefb4319f8
4 changed files with 13 additions and 18 deletions
+1
View File
@@ -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
View File
@@ -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
View File
@@ -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 {