debugger: Skip out-of-bounds breakpoints when deserializing (#28781)
Previously we'd crash when deserializing a breakpoint whose row number was out of bounds (could happen if the file was externally modified). This PR fixes that code to skip such breakpoints. An alternative would be to clip the deserialized `PointUtf16`, but I think that would mostly result in nonsensical breakpoints. Release Notes: - N/A
This commit is contained in:
parent
42c3f4e7cf
commit
cd4a3fd679
1 changed files with 7 additions and 1 deletions
|
@ -591,7 +591,13 @@ impl BreakpointStore {
|
|||
this.update(cx, |_, cx| BreakpointsInFile::new(buffer, cx))?;
|
||||
|
||||
for bp in bps {
|
||||
let position = snapshot.anchor_after(PointUtf16::new(bp.row, 0));
|
||||
let max_point = snapshot.max_point_utf16();
|
||||
let point = PointUtf16::new(bp.row, 0);
|
||||
if point > max_point {
|
||||
log::error!("skipping a deserialized breakpoint that's out of range");
|
||||
continue;
|
||||
}
|
||||
let position = snapshot.anchor_after(point);
|
||||
breakpoints_for_file.breakpoints.push((
|
||||
position,
|
||||
Breakpoint {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue