Validate splits don't overlap symbols (or each other)

Use DoubleEndedIterator::next_back instead of Iterator::last to avoid unnecessary iteration.
This commit is contained in:
2023-08-15 09:40:32 -04:00
parent d272b5dce8
commit 2c2ee8bf08
7 changed files with 82 additions and 10 deletions

View File

@@ -80,7 +80,7 @@ impl FunctionSlices {
pub fn add_block_start(&mut self, addr: u32) -> bool {
// Slice previous block.
if let Some((_, end)) = self.blocks.range_mut(..addr).last() {
if let Some((_, end)) = self.blocks.range_mut(..addr).next_back() {
let last_end = *end;
if last_end > addr {
*end = addr;

View File

@@ -376,7 +376,7 @@ impl Tracker {
if self.ignore_addresses.contains(&addr) {
return false;
}
if let Some((&start, &end)) = obj.blocked_ranges.range(..=from).last() {
if let Some((&start, &end)) = obj.blocked_ranges.range(..=from).next_back() {
if from >= start && from < end {
return false;
}