From: Matt Corallo Date: Sun, 2 Jun 2019 14:41:11 +0000 (-0400) Subject: Fix split point calculation X-Git-Url: http://git.bitcoin.ninja/?a=commitdiff_plain;h=af2cd26873a4ca90fd5c44a3b8d19ac6cfbbaf34;p=dnsseed-rust Fix split point calculation --- diff --git a/src/datastore.rs b/src/datastore.rs index 827726e..1a3d7c9 100644 --- a/src/datastore.rs +++ b/src/datastore.rs @@ -496,7 +496,7 @@ impl Store { let mut nodes = self.nodes.write().unwrap(); for (idx, state_nodes) in nodes.state_next_scan.iter_mut().enumerate() { let cmp_time = cur_time - Duration::from_secs(self.get_u64(U64Setting::RescanInterval(AddressState::from_num(idx as u8).unwrap()))); - let split_point = cmp::min(cmp::min(results - res.len(), results - (per_bucket_results * (AddressState::get_count() as usize - idx))), + let split_point = cmp::min(cmp::min(results - res.len(), (per_bucket_results * (idx + 1)) - res.len()), state_nodes.binary_search_by(|a| a.0.cmp(&cmp_time)).unwrap_or_else(|idx| idx)); let mut new_nodes = state_nodes.split_off(split_point); mem::swap(&mut new_nodes, state_nodes);