summaryrefslogtreecommitdiff
path: root/crates/typst-library/src/visualize
diff options
context:
space:
mode:
authorbluebear94 <uruwi@protonmail.com>2023-10-05 04:26:36 -0400
committerGitHub <noreply@github.com>2023-10-05 10:26:36 +0200
commit6bb776029e5d3261bd79605f91eb1e7fd14d06ea (patch)
tree17c6f352d848731309580c3dbe0c9f08304d7b38 /crates/typst-library/src/visualize
parentea0f22a8ca2eec4bde44fc4afc6032c2728aed27 (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.rs3
-rw-r--r--crates/typst-library/src/visualize/polygon.rs3
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.