editor: Fix panics that could occur when content mask had negative bounds#47327
Merged
Anthony-Eid merged 3 commits intomainfrom Jan 23, 2026
Merged
editor: Fix panics that could occur when content mask had negative bounds#47327Anthony-Eid merged 3 commits intomainfrom
Anthony-Eid merged 3 commits intomainfrom
Conversation
This panic happened because the editor was using `window.content_mask` to get the visible bounds, which had a negative value for its height in some cases. This happened for three reasons: 1. `Bounds::from_corners` returns a negative size if callers pass in corners where `bottom_right < top_left`. I originally wanted to add error checking to this function but didn't, because I wasn't sure if negative size is used on purpose somewhere else. 2. `Bounds::intersect` could return negative-sized bounds when the two bounds didn't overlap, instead of returning a zero sized bounds. 3. `Style::paint` sometimes passed invalid corner values to `Bounds::from_corners` (where the computed bottom-right was above/left of the top-left).
Contributor
Author
|
/cherry-pick stable |
Contributor
Author
|
/cherry-pick preview |
github-actions bot
pushed a commit
that referenced
this pull request
Jan 23, 2026
…unds (#47327) Closes #47157 This panic happened because the editor was using `window.content_mask` to get the visible bounds, which had a negative value for its height in some cases. This happened for three reasons: 1. `Bounds::from_corners` returns a negative size if callers pass in corners where `bottom_right < top_left`. I originally wanted to add error checking to this function but didn't, because it might be better to move the error checking higher up. For now I'm going to push a fix and figure out a better solution later 2. `Bounds::intersect` could return negative-sized bounds when the two bounds didn't overlap, instead of returning a zero sized bounds. 3. `Style::paint` sometimes passed invalid corner values to `Bounds::from_corners` (where the computed bottom-right was above/left of the top-left). Release Notes: - editor: Fix a crash that could happen when editor visible line height is zero --------- Co-authored-by: Zed Zippy <234243425+zed-zippy[bot]@users.noreply.github.com>
github-actions bot
pushed a commit
that referenced
this pull request
Jan 23, 2026
…unds (#47327) Closes #47157 This panic happened because the editor was using `window.content_mask` to get the visible bounds, which had a negative value for its height in some cases. This happened for three reasons: 1. `Bounds::from_corners` returns a negative size if callers pass in corners where `bottom_right < top_left`. I originally wanted to add error checking to this function but didn't, because it might be better to move the error checking higher up. For now I'm going to push a fix and figure out a better solution later 2. `Bounds::intersect` could return negative-sized bounds when the two bounds didn't overlap, instead of returning a zero sized bounds. 3. `Style::paint` sometimes passed invalid corner values to `Bounds::from_corners` (where the computed bottom-right was above/left of the top-left). Release Notes: - editor: Fix a crash that could happen when editor visible line height is zero --------- Co-authored-by: Zed Zippy <234243425+zed-zippy[bot]@users.noreply.github.com>
zed-zippy bot
added a commit
that referenced
this pull request
Jan 23, 2026
…unds (#47327) (cherry-pick to preview) (#47502) Cherry-pick of #47327 to preview ---- Closes #47157 This panic happened because the editor was using `window.content_mask` to get the visible bounds, which had a negative value for its height in some cases. This happened for three reasons: 1. `Bounds::from_corners` returns a negative size if callers pass in corners where `bottom_right < top_left`. I originally wanted to add error checking to this function but didn't, because it might be better to move the error checking higher up. For now I'm going to push a fix and figure out a better solution later 2. `Bounds::intersect` could return negative-sized bounds when the two bounds didn't overlap, instead of returning a zero sized bounds. 3. `Style::paint` sometimes passed invalid corner values to `Bounds::from_corners` (where the computed bottom-right was above/left of the top-left). Release Notes: - editor: Fix a crash that could happen when editor visible line height is zero --------- Co-authored-by: Zed Zippy <234243425+zed-zippy[bot]@users.noreply.github.com> Co-authored-by: Anthony Eid <56899983+Anthony-Eid@users.noreply.github.com> Co-authored-by: Zed Zippy <234243425+zed-zippy[bot]@users.noreply.github.com>
zed-zippy bot
added a commit
that referenced
this pull request
Jan 23, 2026
…unds (#47327) (cherry-pick to stable) (#47501) Cherry-pick of #47327 to stable ---- Closes #47157 This panic happened because the editor was using `window.content_mask` to get the visible bounds, which had a negative value for its height in some cases. This happened for three reasons: 1. `Bounds::from_corners` returns a negative size if callers pass in corners where `bottom_right < top_left`. I originally wanted to add error checking to this function but didn't, because it might be better to move the error checking higher up. For now I'm going to push a fix and figure out a better solution later 2. `Bounds::intersect` could return negative-sized bounds when the two bounds didn't overlap, instead of returning a zero sized bounds. 3. `Style::paint` sometimes passed invalid corner values to `Bounds::from_corners` (where the computed bottom-right was above/left of the top-left). Release Notes: - editor: Fix a crash that could happen when editor visible line height is zero --------- Co-authored-by: Zed Zippy <234243425+zed-zippy[bot]@users.noreply.github.com> Co-authored-by: Anthony Eid <56899983+Anthony-Eid@users.noreply.github.com> Co-authored-by: Zed Zippy <234243425+zed-zippy[bot]@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This panic happened because the editor was using
window.content_maskto get the visible bounds, which had a negative value for its height in some cases.Closes #47157
This happened for three reasons:
Bounds::from_cornersreturns a negative size if callers pass in corners wherebottom_right < top_left. I originally wanted to add error checking to this function but didn't, because it might be better to move the error checking higher up. For now I'm going to push a fix and figure out a better solution laterBounds::intersectcould return negative-sized bounds when the two bounds didn't overlap, instead of returning a zero sized bounds.Style::paintsometimes passed invalid corner values toBounds::from_corners(where the computed bottom-right was above/left of the top-left).Release Notes: