diff options
| author | bluebear94 <uruwi@protonmail.com> | 2023-10-05 04:26:36 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-10-05 10:26:36 +0200 |
| commit | 6bb776029e5d3261bd79605f91eb1e7fd14d06ea (patch) | |
| tree | 17c6f352d848731309580c3dbe0c9f08304d7b38 /crates/typst-library/src/visualize | |
| parent | ea0f22a8ca2eec4bde44fc4afc6032c2728aed27 (diff) | |
Fix crashes with infinite lengths (part 2) (#2298)
Diffstat (limited to 'crates/typst-library/src/visualize')
| -rw-r--r-- | crates/typst-library/src/visualize/line.rs | 3 | ||||
| -rw-r--r-- | crates/typst-library/src/visualize/polygon.rs | 3 |
2 files changed, 6 insertions, 0 deletions
diff --git a/crates/typst-library/src/visualize/line.rs b/crates/typst-library/src/visualize/line.rs index 6837caf1..da497cf4 100644 --- a/crates/typst-library/src/visualize/line.rs +++ b/crates/typst-library/src/visualize/line.rs @@ -75,6 +75,9 @@ impl Layout for LineElem { let size = start.max(start + delta).max(Size::zero()); let target = regions.expand.select(regions.size, size); + if !target.is_finite() { + bail!(error!(self.span(), "cannot create line with infinite length")); + } let mut frame = Frame::soft(target); let shape = Geometry::Line(delta.to_point()).stroked(stroke); frame.push(start.to_point(), FrameItem::Shape(shape, self.span())); diff --git a/crates/typst-library/src/visualize/polygon.rs b/crates/typst-library/src/visualize/polygon.rs index 1d19a94d..b1ed9eaa 100644 --- a/crates/typst-library/src/visualize/polygon.rs +++ b/crates/typst-library/src/visualize/polygon.rs @@ -130,6 +130,9 @@ impl Layout for PolygonElem { .collect(); let size = points.iter().fold(Point::zero(), |max, c| c.max(max)).to_size(); + if !size.is_finite() { + bail!(error!(self.span(), "cannot create polygon with infinite size")); + } let mut frame = Frame::hard(size); // Only create a path if there are more than zero points. |
