From 399fb19c3014a4a5c3f0575dd222e7df6fda8c83 Mon Sep 17 00:00:00 2001 From: John Tromp Date: Thu, 20 Jul 2023 15:25:53 +0200 Subject: [PATCH] Fix leading zeroes bugs (#3763) * remove two unneeded mut's * ensure correct size for leading_zeros() --- config/src/config.rs | 2 +- core/src/pow/cuckaroo.rs | 4 ++-- core/src/pow/cuckarood.rs | 4 ++-- core/src/pow/cuckaroom.rs | 4 ++-- core/src/pow/cuckarooz.rs | 4 ++-- core/src/pow/cuckatoo.rs | 2 +- servers/src/mining/stratumserver.rs | 2 +- 7 files changed, 11 insertions(+), 11 deletions(-) diff --git a/config/src/config.rs b/config/src/config.rs index 314573c59..716064904 100644 --- a/config/src/config.rs +++ b/config/src/config.rs @@ -161,7 +161,7 @@ impl GlobalConfig { /// apply defaults for each chain type pub fn for_chain(chain_type: &global::ChainTypes) -> GlobalConfig { let mut defaults_conf = GlobalConfig::default(); - let mut defaults = &mut defaults_conf.members.as_mut().unwrap().server; + let defaults = &mut defaults_conf.members.as_mut().unwrap().server; defaults.chain_type = chain_type.clone(); match *chain_type { diff --git a/core/src/pow/cuckaroo.rs b/core/src/pow/cuckaroo.rs index 2b99cb449..05e42f368 100644 --- a/core/src/pow/cuckaroo.rs +++ b/core/src/pow/cuckaroo.rs @@ -70,8 +70,8 @@ impl PoWContext for CuckarooContext { let mut uvs = vec![0u64; 2 * size]; let mut xor0: u64 = 0; let mut xor1: u64 = 0; - let mask = u64::MAX >> size.leading_zeros(); // round size up to 2-power - 1 - // the next three arrays form a linked list of nodes with matching bits 6..1 + let mask = u64::MAX >> (size as u64).leading_zeros(); // round size up to 2-power - 1 + // the next three arrays form a linked list of nodes with matching bits 6..1 let mut headu = vec![2 * size; 1 + mask as usize]; let mut headv = vec![2 * size; 1 + mask as usize]; let mut prev = vec![0usize; 2 * size]; diff --git a/core/src/pow/cuckarood.rs b/core/src/pow/cuckarood.rs index 742dceb6a..ed4c73f1d 100644 --- a/core/src/pow/cuckarood.rs +++ b/core/src/pow/cuckarood.rs @@ -65,8 +65,8 @@ impl PoWContext for CuckaroodContext { let mut ndir = vec![0usize; 2]; let mut xor0: u64 = 0; let mut xor1: u64 = 0; - let mask = u64::MAX >> size.leading_zeros(); // round size up to 2-power - 1 - // the next two arrays form a linked list of nodes with matching bits 4..0|dir + let mask = u64::MAX >> (size as u64).leading_zeros(); // round size up to 2-power - 1 + // the next two arrays form a linked list of nodes with matching bits 4..0|dir let mut headu = vec![2 * size; 1 + mask as usize]; let mut headv = vec![2 * size; 1 + mask as usize]; let mut prev = vec![0usize; 2 * size]; diff --git a/core/src/pow/cuckaroom.rs b/core/src/pow/cuckaroom.rs index 3ab59887d..82fc031d7 100644 --- a/core/src/pow/cuckaroom.rs +++ b/core/src/pow/cuckaroom.rs @@ -64,8 +64,8 @@ impl PoWContext for CuckaroomContext { let mut to = vec![0u64; size]; let mut xor_from: u64 = 0; let mut xor_to: u64 = 0; - let mask = u64::MAX >> size.leading_zeros(); // round size up to 2-power - 1 - // the next two arrays form a linked list of nodes with matching bits 6..1 + let mask = u64::MAX >> (size as u64).leading_zeros(); // round size up to 2-power - 1 + // the next two arrays form a linked list of nodes with matching bits 6..1 let mut head = vec![size; 1 + mask as usize]; let mut prev = vec![0usize; size]; diff --git a/core/src/pow/cuckarooz.rs b/core/src/pow/cuckarooz.rs index 174e833b1..5705a530e 100644 --- a/core/src/pow/cuckarooz.rs +++ b/core/src/pow/cuckarooz.rs @@ -63,8 +63,8 @@ impl PoWContext for CuckaroozContext { let nonces = &proof.nonces; let mut uvs = vec![0u64; 2 * size]; let mut xoruv: u64 = 0; - let mask = u64::MAX >> size.leading_zeros(); // round size up to 2-power - 1 - // the next two arrays form a linked list of nodes with matching bits 6..1 + let mask = u64::MAX >> (size as u64).leading_zeros(); // round size up to 2-power - 1 + // the next two arrays form a linked list of nodes with matching bits 6..1 let mut head = vec![2 * size; 1 + mask as usize]; let mut prev = vec![0usize; 2 * size]; diff --git a/core/src/pow/cuckatoo.rs b/core/src/pow/cuckatoo.rs index 5f7051575..eff3d3168 100644 --- a/core/src/pow/cuckatoo.rs +++ b/core/src/pow/cuckatoo.rs @@ -261,7 +261,7 @@ impl CuckatooContext { } let nonces = &proof.nonces; let mut uvs = vec![0u64; 2 * size]; - let mask = u64::MAX >> size.leading_zeros(); // round size up to 2-power - 1 + let mask = u64::MAX >> (size as u64).leading_zeros(); // round size up to 2-power - 1 let mut xor0: u64 = (size as u64 / 2) & 1; let mut xor1: u64 = xor0; // the next two arrays form a linked list of nodes with matching bits 6..1 diff --git a/servers/src/mining/stratumserver.rs b/servers/src/mining/stratumserver.rs index eb9530791..eaab65ae6 100644 --- a/servers/src/mining/stratumserver.rs +++ b/servers/src/mining/stratumserver.rs @@ -729,7 +729,7 @@ impl WorkersList { pub fn login(&self, worker_id: usize, login: String, agent: String) -> Result<(), RpcError> { let mut wl = self.workers_list.write(); - let mut worker = wl + let worker = wl .get_mut(&worker_id) .ok_or_else(RpcError::internal_error)?; worker.login = Some(login);