Skip to content

Commit 6c371e0

Browse files
Skip no-op replacement via try_demangle
1 parent ae66b3e commit 6c371e0

File tree

1 file changed

+13
-7
lines changed

1 file changed

+13
-7
lines changed

src/lib.rs

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -169,14 +169,20 @@ fn demangle_line(line: &str, include_hash: bool) -> std::borrow::Cow<str> {
169169
.unwrap_or(line.len());
170170

171171
let mangled = &line[head..match_end];
172-
let demangled = if include_hash {
173-
format!("{}", demangle(mangled))
172+
if let Ok(demangled) = try_demangle(mangled) {
173+
let demangled = if include_hash {
174+
format!("{}", demangled)
175+
} else {
176+
format!("{:#}", demangled)
177+
};
178+
line.to_mut().replace_range(head..match_end, &demangled);
179+
// Start again after the replacement.
180+
head = head + demangled.len();
174181
} else {
175-
format!("{:#}", demangle(mangled))
176-
};
177-
line.to_mut().replace_range(head..match_end, &demangled);
178-
// Start again after the replacement.
179-
head = head + demangled.len();
182+
// Skip over the full symbol. We don't try to find a partial Rust symbol in the wider
183+
// matched text today.
184+
head = head + mangled.len();
185+
}
180186
}
181187
}
182188

0 commit comments

Comments
 (0)