Fix overflow in error emitter

This commit is contained in:
Badel2
2023-05-19 00:44:14 +02:00
parent 8a281f9c79
commit cbb41008fd
6 changed files with 108 additions and 22 deletions

View File

@@ -2303,22 +2303,25 @@ impl EmitterWriter {
// Colorize addition/replacements with green.
for &SubstitutionHighlight { start, end } in highlight_parts {
// Account for tabs when highlighting (#87972).
let tabs: usize = line_to_add
.chars()
.take(start)
.map(|ch| match ch {
'\t' => 3,
_ => 0,
})
.sum();
buffer.set_style_range(
*row_num,
max_line_num_len + 3 + start + tabs,
max_line_num_len + 3 + end + tabs,
Style::Addition,
true,
);
// This is a no-op for empty ranges
if start != end {
// Account for tabs when highlighting (#87972).
let tabs: usize = line_to_add
.chars()
.take(start)
.map(|ch| match ch {
'\t' => 3,
_ => 0,
})
.sum();
buffer.set_style_range(
*row_num,
max_line_num_len + 3 + start + tabs,
max_line_num_len + 3 + end + tabs,
Style::Addition,
true,
);
}
}
*row_num += 1;
}