aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/canvasrenderingcontext2d.rs
diff options
context:
space:
mode:
authorMátyás Mustoha <mmatyas@inf.u-szeged.hu>2015-03-30 11:05:33 +0200
committerMátyás Mustoha <mmatyas@inf.u-szeged.hu>2015-03-30 11:05:33 +0200
commit0a3b4f2f651f8c4268ed15a55d30df03fc3377a7 (patch)
treed5e933a27edb2820b37613bf306edbc038cb9a31 /components/script/dom/canvasrenderingcontext2d.rs
parent350a35428ab547e45e86826d2a818cb15d004bf5 (diff)
downloadservo-0a3b4f2f651f8c4268ed15a55d30df03fc3377a7.tar.gz
servo-0a3b4f2f651f8c4268ed15a55d30df03fc3377a7.zip
Canvas: arc throws IndexSizeError on negative radius.
Diffstat (limited to 'components/script/dom/canvasrenderingcontext2d.rs')
-rw-r--r--components/script/dom/canvasrenderingcontext2d.rs8
1 files changed, 7 insertions, 1 deletions
diff --git a/components/script/dom/canvasrenderingcontext2d.rs b/components/script/dom/canvasrenderingcontext2d.rs
index 427f8d78501..4145c8e28cc 100644
--- a/components/script/dom/canvasrenderingcontext2d.rs
+++ b/components/script/dom/canvasrenderingcontext2d.rs
@@ -460,15 +460,21 @@ impl<'a> CanvasRenderingContext2DMethods for JSRef<'a, CanvasRenderingContext2D>
Point2D(x as f32, y as f32))).unwrap();
}
- fn Arc(self, x: Finite<f64>, y: Finite<f64>, r: Finite<f64>, start: Finite<f64>, end: Finite<f64>, ccw: bool) {
+ fn Arc(self, x: Finite<f64>, y: Finite<f64>, r: Finite<f64>,
+ start: Finite<f64>, end: Finite<f64>, ccw: bool) -> Fallible<()> {
let x = *x;
let y = *y;
let r = *r;
let start = *start;
let end = *end;
+ if r < 0.0 {
+ return Err(IndexSize);
+ }
+
self.renderer.send(CanvasMsg::Arc(Point2D(x as f32, y as f32), r as f32,
start as f32, end as f32, ccw)).unwrap();
+ Ok(())
}
// https://html.spec.whatwg.org/#dom-context-2d-imagesmoothingenabled