Fix out-of-range panic when requesting outline items at EOF

Max Brunsfeld created

Change summary

crates/language/src/buffer.rs | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)

Detailed changes

crates/language/src/buffer.rs 🔗

@@ -1953,8 +1953,10 @@ impl BufferSnapshot {
         theme: Option<&SyntaxTheme>,
     ) -> Option<Vec<OutlineItem<Anchor>>> {
         let position = position.to_offset(self);
-        let mut items =
-            self.outline_items_containing(position.saturating_sub(1)..position + 1, theme)?;
+        let mut items = self.outline_items_containing(
+            position.saturating_sub(1)..self.len().min(position + 1),
+            theme,
+        )?;
         let mut prev_depth = None;
         items.retain(|item| {
             let result = prev_depth.map_or(true, |prev_depth| item.depth > prev_depth);