From 62e3a4921206f0b09d85815559c1f19c560ccf3d Mon Sep 17 00:00:00 2001 From: Finn Evers Date: Mon, 10 Nov 2025 21:08:48 +0100 Subject: [PATCH] editor: Fix rare panic in wrap map (#39379) Closes ZED-1SV Closes ZED-TG Closes ZED-22G Closes ZED-22J This seems to fix the reported error there, but ultimately, this might benefit from a test to reproduce. Hence, marking as draft for now. Release Notes: - Fixed a rare panic whilst wrapping lines. --- crates/editor/src/display_map/block_map.rs | 20 ++++++++------------ crates/editor/src/display_map/wrap_map.rs | 2 +- 2 files changed, 9 insertions(+), 13 deletions(-) diff --git a/crates/editor/src/display_map/block_map.rs b/crates/editor/src/display_map/block_map.rs index 54c008ef60cdaf3a6c7b9231bfbb90d2caf0b3ae..639d2a06579ca16eb938f3d23908e48b702254ef 100644 --- a/crates/editor/src/display_map/block_map.rs +++ b/crates/editor/src/display_map/block_map.rs @@ -19,7 +19,7 @@ use std::{ cell::RefCell, cmp::{self, Ordering}, fmt::Debug, - ops::{Deref, DerefMut, Range, RangeBounds, RangeInclusive}, + ops::{Deref, DerefMut, Not, Range, RangeBounds, RangeInclusive}, sync::{ Arc, atomic::{AtomicUsize, Ordering::SeqCst}, @@ -1879,18 +1879,14 @@ impl Iterator for BlockRows<'_> { } let transform = self.transforms.item()?; - if let Some(block) = transform.block.as_ref() { - if block.is_replacement() && self.transforms.start().0 == self.output_row { - if matches!(block, Block::FoldedBuffer { .. }) { - Some(RowInfo::default()) - } else { - Some(self.input_rows.next().unwrap()) - } - } else { - Some(RowInfo::default()) - } + if transform.block.as_ref().is_none_or(|block| { + block.is_replacement() + && self.transforms.start().0 == self.output_row + && matches!(block, Block::FoldedBuffer { .. }).not() + }) { + self.input_rows.next() } else { - Some(self.input_rows.next().unwrap()) + Some(RowInfo::default()) } } } diff --git a/crates/editor/src/display_map/wrap_map.rs b/crates/editor/src/display_map/wrap_map.rs index ffdae5913229de33faeab195dd5211229c641f73..6d9704b5f93c0ce48d413babdd59997b02f093e6 100644 --- a/crates/editor/src/display_map/wrap_map.rs +++ b/crates/editor/src/display_map/wrap_map.rs @@ -965,7 +965,7 @@ impl<'a> Iterator for WrapChunks<'a> { } if self.input_chunk.text.is_empty() { - self.input_chunk = self.input_chunks.next().unwrap(); + self.input_chunk = self.input_chunks.next()?; } let mut input_len = 0;