Maybe fix panic (#29352)

Since around the time we shipped block diagnostics, we've been seeing an
out of range panic in the editor.

Although the code is heavily inlined, so the stacktrace is missing, this
seems like a likely place that indexing may have gone wrong.

Release Notes:

- Fixed a rare panic in the editor
This commit is contained in:
Conrad Irwin 2025-04-25 11:12:16 -06:00 committed by GitHub
parent cc57bc7c96
commit 6692bd9f2b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -2771,19 +2771,21 @@ impl EditorElement {
text_x + layout.width,
))
};
x_position = if rows.contains(&align_to.row()) {
x_and_width(&line_layouts[align_to.row().minus(rows.start) as usize])
} else {
x_and_width(&layout_line(
align_to.row(),
snapshot,
&self.style,
editor_width,
is_row_soft_wrapped,
window,
cx,
))
};
let line_ix = align_to.row().0.checked_sub(rows.start.0);
x_position =
if let Some(layout) = line_ix.and_then(|ix| line_layouts.get(ix as usize)) {
x_and_width(&layout)
} else {
x_and_width(&layout_line(
align_to.row(),
snapshot,
&self.style,
editor_width,
is_row_soft_wrapped,
window,
cx,
))
};
let anchor_x = x_position.unwrap().0;