editor: Fix panic in wrap_map (#43650)

Fixes ZED-3P9

We only clamped the end which for a completely wrong input could cause
us to construct a reversed range which will end up underflowing later
on.

Release Notes:

- N/A *or* Added/Fixed/Improved ...
This commit is contained in:
Lukas Wirth
2025-11-27 09:29:27 +00:00
committed by GitHub
parent 99d7b2fa1d
commit 8e04706c4d
+8 -7
View File
@@ -622,9 +622,10 @@ impl WrapSnapshot {
if transforms.item().is_some_and(|t| t.is_isomorphic()) {
input_start.0 += output_start.0 - transforms.start().0.0;
}
let input_end = self
.to_tab_point(output_end)
.min(self.tab_snapshot.max_point());
let input_end = self.to_tab_point(output_end);
let max_point = self.tab_snapshot.max_point();
let input_start = input_start.min(max_point);
let input_end = input_end.min(max_point);
WrapChunks {
input_chunks: self.tab_snapshot.chunks(
input_start..input_end,
@@ -921,10 +922,10 @@ impl WrapChunks<'_> {
if self.transforms.item().is_some_and(|t| t.is_isomorphic()) {
input_start.0 += output_start.0 - self.transforms.start().0.0;
}
let input_end = self
.snapshot
.to_tab_point(output_end)
.min(self.snapshot.tab_snapshot.max_point());
let input_end = self.snapshot.to_tab_point(output_end);
let max_point = self.snapshot.tab_snapshot.max_point();
let input_start = input_start.min(max_point);
let input_end = input_end.min(max_point);
self.input_chunks.seek(input_start..input_end);
self.input_chunk = Chunk::default();
self.output_position = output_start;