diff options
author | David Zbarsky <dzbarsky@gmail.com> | 2015-08-04 15:05:15 -0400 |
---|---|---|
committer | David Zbarsky <dzbarsky@gmail.com> | 2015-08-04 15:08:37 -0400 |
commit | 75e444c3b2aea541936331e19c95f52b24159883 (patch) | |
tree | 47c8ea9879beb0da4ce05a3d9f0f70a0edc2f7a8 /components/script/dom/canvasrenderingcontext2d.rs | |
parent | 0565df859684560b525b0361476d334f79db8474 (diff) | |
download | servo-75e444c3b2aea541936331e19c95f52b24159883.tar.gz servo-75e444c3b2aea541936331e19c95f52b24159883.zip |
Make createRadialGradient throw for negative radii
Diffstat (limited to 'components/script/dom/canvasrenderingcontext2d.rs')
-rw-r--r-- | components/script/dom/canvasrenderingcontext2d.rs | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/components/script/dom/canvasrenderingcontext2d.rs b/components/script/dom/canvasrenderingcontext2d.rs index 834e9606c49..d70cc85fe85 100644 --- a/components/script/dom/canvasrenderingcontext2d.rs +++ b/components/script/dom/canvasrenderingcontext2d.rs @@ -1019,10 +1019,14 @@ impl<'a> CanvasRenderingContext2DMethods for &'a CanvasRenderingContext2D { // https://html.spec.whatwg.org/multipage/#dom-context-2d-createradialgradient fn CreateRadialGradient(self, x0: Finite<f64>, y0: Finite<f64>, r0: Finite<f64>, x1: Finite<f64>, y1: Finite<f64>, r1: Finite<f64>) - -> Root<CanvasGradient> { - CanvasGradient::new(self.global.root().r(), - CanvasGradientStyle::Radial( - RadialGradientStyle::new(*x0, *y0, *r0, *x1, *y1, *r1, Vec::new()))) + -> Fallible<Root<CanvasGradient>> { + if *r0 < 0. || *r1 < 0. { + return Err(IndexSize); + } + + Ok(CanvasGradient::new(self.global.root().r(), + CanvasGradientStyle::Radial( + RadialGradientStyle::new(*x0, *y0, *r0, *x1, *y1, *r1, Vec::new())))) } // https://html.spec.whatwg.org/multipage/#dom-context-2d-createpattern |