aboutsummaryrefslogtreecommitdiffstats
path: root/components/canvas/canvas_data.rs
diff options
context:
space:
mode:
authorpylbrecht <palbrecht@mailbox.org>2019-10-31 19:11:56 +0100
committerpylbrecht <palbrecht@mailbox.org>2019-12-17 19:51:57 +0100
commitb8b33788b654d76e26aa7acefb7e85e46f60896b (patch)
treef5cc7a229182c112c85050ac3c293d7f9032385f /components/canvas/canvas_data.rs
parent606ad20544f34d066f1a94b3cd48bfde47189b62 (diff)
downloadservo-b8b33788b654d76e26aa7acefb7e85e46f60896b.tar.gz
servo-b8b33788b654d76e26aa7acefb7e85e46f60896b.zip
Handle empty paths in PathBuilder::get_current_point()
The case of calling get_current_point() on empty paths has not been handled and caused panics.
Diffstat (limited to 'components/canvas/canvas_data.rs')
-rw-r--r--components/canvas/canvas_data.rs8
1 files changed, 5 insertions, 3 deletions
diff --git a/components/canvas/canvas_data.rs b/components/canvas/canvas_data.rs
index 29dd1743b46..12bc87f84e1 100644
--- a/components/canvas/canvas_data.rs
+++ b/components/canvas/canvas_data.rs
@@ -108,7 +108,7 @@ pub trait GenericPathBuilder {
end_angle: f32,
anticlockwise: bool,
);
- fn get_current_point(&mut self) -> Point2D<f32>;
+ fn get_current_point(&mut self) -> Option<Point2D<f32>>;
fn line_to(&mut self, point: Point2D<f32>);
fn move_to(&mut self, point: Point2D<f32>);
fn quadratic_curve_to(&mut self, control_point: &Point2D<f32>, end_point: &Point2D<f32>);
@@ -205,8 +205,10 @@ impl<'a> PathBuilderRef<'a> {
Some(i) => i,
None => return None,
};
- let current_point = self.builder.get_current_point();
- Some(inverse.transform_point(Point2D::new(current_point.x, current_point.y)))
+ match self.builder.get_current_point() {
+ Some(point) => Some(inverse.transform_point(Point2D::new(point.x, point.y))),
+ None => None,
+ }
}
}