Skip to content

Commit 0df1e43

Browse files
committed
grin v5.3 (0124) Fix leading zeroes bugs (mimblewimble#3763)
* remove two unneeded mut's * ensure correct size for leading_zeros()
1 parent c370e17 commit 0df1e43

File tree

5 files changed

+9
-9
lines changed

5 files changed

+9
-9
lines changed

core/src/pow/cuckaroo.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,8 @@ impl PoWContext for CuckarooContext {
6565
let mut uvs = vec![0u64; 2 * size];
6666
let mut xor0: u64 = 0;
6767
let mut xor1: u64 = 0;
68-
let mask = u64::MAX >> size.leading_zeros(); // round size up to 2-power - 1
69-
// the next three arrays form a linked list of nodes with matching bits 6..1
68+
let mask = u64::MAX >> (size as u64).leading_zeros(); // round size up to 2-power - 1
69+
// the next three arrays form a linked list of nodes with matching bits 6..1
7070
let mut headu = vec![2 * size; 1 + mask as usize];
7171
let mut headv = vec![2 * size; 1 + mask as usize];
7272
let mut prev = vec![0usize; 2 * size];

core/src/pow/cuckarood.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,8 @@ impl PoWContext for CuckaroodContext {
6565
let mut ndir = vec![0usize; 2];
6666
let mut xor0: u64 = 0;
6767
let mut xor1: u64 = 0;
68-
let mask = u64::MAX >> size.leading_zeros(); // round size up to 2-power - 1
69-
// the next two arrays form a linked list of nodes with matching bits 4..0|dir
68+
let mask = u64::MAX >> (size as u64).leading_zeros(); // round size up to 2-power - 1
69+
// the next two arrays form a linked list of nodes with matching bits 4..0|dir
7070
let mut headu = vec![2 * size; 1 + mask as usize];
7171
let mut headv = vec![2 * size; 1 + mask as usize];
7272
let mut prev = vec![0usize; 2 * size];

core/src/pow/cuckaroom.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,8 @@ impl PoWContext for CuckaroomContext {
6464
let mut to = vec![0u64; size];
6565
let mut xor_from: u64 = 0;
6666
let mut xor_to: u64 = 0;
67-
let mask = u64::MAX >> size.leading_zeros(); // round size up to 2-power - 1
68-
// the next two arrays form a linked list of nodes with matching bits 6..1
67+
let mask = u64::MAX >> (size as u64).leading_zeros(); // round size up to 2-power - 1
68+
// the next two arrays form a linked list of nodes with matching bits 6..1
6969
let mut head = vec![size; 1 + mask as usize];
7070
let mut prev = vec![0usize; size];
7171

core/src/pow/cuckarooz.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,8 @@ impl PoWContext for CuckaroozContext {
6363
let nonces = &proof.nonces;
6464
let mut uvs = vec![0u64; 2 * size];
6565
let mut xoruv: u64 = 0;
66-
let mask = u64::MAX >> size.leading_zeros(); // round size up to 2-power - 1
67-
// the next two arrays form a linked list of nodes with matching bits 6..1
66+
let mask = u64::MAX >> (size as u64).leading_zeros(); // round size up to 2-power - 1
67+
// the next two arrays form a linked list of nodes with matching bits 6..1
6868
let mut head = vec![2 * size; 1 + mask as usize];
6969
let mut prev = vec![0usize; 2 * size];
7070

core/src/pow/cuckatoo.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -261,7 +261,7 @@ impl CuckatooContext {
261261
}
262262
let nonces = &proof.nonces;
263263
let mut uvs = vec![0u64; 2 * size];
264-
let mask = u64::MAX >> size.leading_zeros(); // round size up to 2-power - 1
264+
let mask = u64::MAX >> (size as u64).leading_zeros(); // round size up to 2-power - 1
265265
let mut xor0: u64 = (size as u64 / 2) & 1;
266266
let mut xor1: u64 = xor0;
267267
// the next two arrays form a linked list of nodes with matching bits 6..1

0 commit comments

Comments
 (0)