From 511e51c80eb19ae7ce46c83ea609fa65a137dbee Mon Sep 17 00:00:00 2001 From: Lukas Wirth Date: Wed, 10 Dec 2025 14:01:31 +0100 Subject: [PATCH] text: Replace some more release panics with graceful fallbacks (#44542) Fixes ZED-3P7 Release Notes: - N/A *or* Added/Fixed/Improved ... --- crates/text/src/text.rs | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/crates/text/src/text.rs b/crates/text/src/text.rs index acd712f40da23af4c364649b14860e41a346389c..31eed1e926d49584e0e71a494555284c66a4e255 100644 --- a/crates/text/src/text.rs +++ b/crates/text/src/text.rs @@ -39,6 +39,7 @@ pub use subscription::*; pub use sum_tree::Bias; use sum_tree::{Dimensions, FilterCursor, SumTree, TreeMap, TreeSet}; use undo_map::UndoMap; +use util::debug_panic; #[cfg(any(test, feature = "test-support"))] use util::RandomCharIter; @@ -2439,7 +2440,7 @@ impl BufferSnapshot { if bias == Bias::Left && offset == 0 { Anchor::min_for_buffer(self.remote_id) } else if bias == Bias::Right - && ((cfg!(debug_assertions) && offset >= self.len()) || offset == self.len()) + && ((!cfg!(debug_assertions) && offset >= self.len()) || offset == self.len()) { Anchor::max_for_buffer(self.remote_id) } else { @@ -2453,7 +2454,15 @@ impl BufferSnapshot { }; } let (start, _, item) = self.fragments.find::(&None, &offset, bias); - let fragment = item.unwrap(); + let Some(fragment) = item else { + // We got a bad offset, likely out of bounds + debug_panic!( + "Failed to find fragment at offset {} (len: {})", + offset, + self.len() + ); + return Anchor::max_for_buffer(self.remote_id); + }; let overshoot = offset - start; Anchor { timestamp: fragment.timestamp,