Skip to content

Commit a138dfa

Browse files
committed
Gracefully handle OOB in symbol_context/symbol_hover
Resolves decomp.me#1576
1 parent 0b95613 commit a138dfa

File tree

2 files changed

+20
-38
lines changed

2 files changed

+20
-38
lines changed

Cargo.lock

Lines changed: 14 additions & 36 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

objdiff-core/src/diff/display.rs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -379,7 +379,9 @@ pub enum HoverItem {
379379
}
380380

381381
pub fn symbol_context(obj: &Object, symbol_index: usize) -> Vec<ContextItem> {
382-
let symbol = &obj.symbols[symbol_index];
382+
let Some(symbol) = obj.symbols.get(symbol_index) else {
383+
return Vec::new();
384+
};
383385
let mut out = Vec::new();
384386
out.push(ContextItem::Copy { value: symbol.name.clone(), label: None });
385387
if let Some(name) = &symbol.demangled_name {
@@ -403,7 +405,9 @@ pub fn symbol_hover(
403405
addend: i64,
404406
override_color: Option<HoverItemColor>,
405407
) -> Vec<HoverItem> {
406-
let symbol = &obj.symbols[symbol_index];
408+
let Some(symbol) = obj.symbols.get(symbol_index) else {
409+
return Vec::new();
410+
};
407411
let addend_str = match addend.cmp(&0i64) {
408412
Ordering::Greater => format!("+{addend:x}"),
409413
Ordering::Less => format!("-{:x}", -addend),

0 commit comments

Comments
 (0)