diff options
author | pylbrecht <palbrecht@mailbox.org> | 2019-10-31 19:11:56 +0100 |
---|---|---|
committer | pylbrecht <palbrecht@mailbox.org> | 2019-12-17 19:51:57 +0100 |
commit | b8b33788b654d76e26aa7acefb7e85e46f60896b (patch) | |
tree | f5cc7a229182c112c85050ac3c293d7f9032385f /components/canvas/canvas_data.rs | |
parent | 606ad20544f34d066f1a94b3cd48bfde47189b62 (diff) | |
download | servo-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.rs | 8 |
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, + } } } |