From 3ff738fa03e05be956225926cdc7a28eda5cf0b6 Mon Sep 17 00:00:00 2001 From: Conrad Irwin Date: Wed, 10 Jul 2024 13:38:26 -0600 Subject: [PATCH] Fix panic clicking on multibyte chars (#14086) Fixes: #12011 When hovering over a multibyte character in a debug build, Zed would panic. Follow up to #11296 Release Notes: - N/A --- crates/editor/src/element.rs | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/crates/editor/src/element.rs b/crates/editor/src/element.rs index c82d5a4b82090596bde58afb6b047e7c7fb11a85..15a016200889b0439fdd242bad042644d32df6af 100644 --- a/crates/editor/src/element.rs +++ b/crates/editor/src/element.rs @@ -709,18 +709,24 @@ impl EditorElement { let Some(hub) = editor.collaboration_hub() else { return; }; - let range = DisplayPoint::new(point.row(), point.column().saturating_sub(1)) - ..DisplayPoint::new( + let start = snapshot.display_snapshot.clip_point( + DisplayPoint::new(point.row(), point.column().saturating_sub(1)), + Bias::Left, + ); + let end = snapshot.display_snapshot.clip_point( + DisplayPoint::new( point.row(), (point.column() + 1).min(snapshot.line_len(point.row())), - ); + ), + Bias::Right, + ); let range = snapshot .buffer_snapshot - .anchor_at(range.start.to_point(&snapshot.display_snapshot), Bias::Left) + .anchor_at(start.to_point(&snapshot.display_snapshot), Bias::Left) ..snapshot .buffer_snapshot - .anchor_at(range.end.to_point(&snapshot.display_snapshot), Bias::Right); + .anchor_at(end.to_point(&snapshot.display_snapshot), Bias::Right); let Some(selection) = snapshot.remote_selections_in_range(&range, hub, cx).next() else { return;