diff --git a/zcash_client_sqlite/src/wallet/scanning.rs b/zcash_client_sqlite/src/wallet/scanning.rs index c3e706f1b..45c178497 100644 --- a/zcash_client_sqlite/src/wallet/scanning.rs +++ b/zcash_client_sqlite/src/wallet/scanning.rs @@ -192,9 +192,9 @@ fn join_nonoverlapping(left: ScanRange, right: ScanRange) -> Joined { ); match join_nonoverlapping(left, gap) { - Joined::One(left) => join_nonoverlapping(left, right), + Joined::One(merged) => join_nonoverlapping(merged, right), Joined::Two(left, gap) => match join_nonoverlapping(gap, right) { - Joined::One(right) => Joined::Two(left, right), + Joined::One(merged) => Joined::Two(left, merged), Joined::Two(gap, right) => Joined::Three(left, gap, right), _ => unreachable!(), }, @@ -232,9 +232,9 @@ fn insert(current: ScanRange, to_insert: ScanRange) -> Joined { left.truncate_end(right.block_range().start), left.truncate_start(right.block_range().end), ) { - (Some(left), Some(end)) => Joined::Three(left, right, end), - (Some(left), None) => Joined::Two(left, right), - (None, Some(end)) => Joined::Two(right, end), + (Some(before), Some(after)) => Joined::Three(before, right, after), + (Some(before), None) => Joined::Two(before, right), + (None, Some(after)) => Joined::Two(right, after), (None, None) => Joined::One(right), }, } @@ -246,7 +246,10 @@ fn insert(current: ScanRange, to_insert: ScanRange) -> Joined { LeftFirstOverlap | RightContained => join_overlapping(to_insert, current, Insert::Left), Equal => Joined::One(ScanRange::from_parts( to_insert.block_range().clone(), - update_priority(current.priority(), to_insert.priority()), + match dominance(current.priority(), to_insert.priority(), Insert::Right) { + Dominance::Left | Dominance::Equal => current.priority(), + Dominance::Right => to_insert.priority(), + } )), RightFirstOverlap | LeftContained => join_overlapping(current, to_insert, Insert::Right), RightFirstDisjoint => join_nonoverlapping(current, to_insert), @@ -398,7 +401,7 @@ impl SpanningTree { SpanningTree::Leaf(entry) => { if let Some(top) = acc.pop() { match join_nonoverlapping(top, entry) { - Joined::One(entry) => acc.push(entry), + Joined::One(merged) => acc.push(merged), Joined::Two(l, r) => { acc.push(l); acc.push(r);