From 2fb7e50b549842999639434dc433f22928678082 Mon Sep 17 00:00:00 2001
From: Pascal Kuthe <pascalkuthe@pm.me>
Date: Sun, 14 Jan 2024 00:00:31 +0100
Subject: [PATCH] don't crash in plaintext bracket match (mm) on empty file

---
 helix-core/src/match_brackets.rs | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/helix-core/src/match_brackets.rs b/helix-core/src/match_brackets.rs
index f6d9885e..e49b408a 100644
--- a/helix-core/src/match_brackets.rs
+++ b/helix-core/src/match_brackets.rs
@@ -141,7 +141,7 @@ fn find_pair(
 #[must_use]
 pub fn find_matching_bracket_plaintext(doc: RopeSlice, cursor_pos: usize) -> Option<usize> {
     // Don't do anything when the cursor is not on top of a bracket.
-    let bracket = doc.char(cursor_pos);
+    let bracket = doc.get_char(cursor_pos)?;
     if !is_valid_bracket(bracket) {
         return None;
     }
@@ -265,6 +265,12 @@ fn as_char(doc: RopeSlice, node: &Node) -> Option<(usize, char)> {
 mod tests {
     use super::*;
 
+    #[test]
+    fn find_matching_bracket_empty_file() {
+        let actual = find_matching_bracket_plaintext("".into(), 0);
+        assert_eq!(actual, None);
+    }
+
     #[test]
     fn test_find_matching_bracket_current_line_plaintext() {
         let assert = |input: &str, pos, expected| {