aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/canvas_state.rs
diff options
context:
space:
mode:
authorUtsav Oza <utsavoza96@gmail.com>2020-05-22 15:51:36 +0530
committerUtsav Oza <utsavoza96@gmail.com>2020-06-10 22:10:32 +0530
commit726f7d72092d5b8908cc8d8fdefe51ebea8dadf8 (patch)
tree3311f49c3f1717d4252253e6ae90223cc54094e3 /components/script/canvas_state.rs
parent68f641ee78c80065663941ff49223c556f200e53 (diff)
downloadservo-726f7d72092d5b8908cc8d8fdefe51ebea8dadf8.tar.gz
servo-726f7d72092d5b8908cc8d8fdefe51ebea8dadf8.zip
Check for valid arguments before processing canvas.fillText
Diffstat (limited to 'components/script/canvas_state.rs')
-rw-r--r--components/script/canvas_state.rs8
1 files changed, 6 insertions, 2 deletions
diff --git a/components/script/canvas_state.rs b/components/script/canvas_state.rs
index 2376d6f8d85..dac2bb04924 100644
--- a/components/script/canvas_state.rs
+++ b/components/script/canvas_state.rs
@@ -988,9 +988,13 @@ impl CanvasState {
// https://html.spec.whatwg.org/multipage/#dom-context-2d-filltext
pub fn fill_text(&self, text: DOMString, x: f64, y: f64, max_width: Option<f64>) {
- let parsed_text: String = text.into();
+ let is_max_width_finite = max_width.map_or(true, |max_width| max_width.is_finite());
+ if !(x.is_finite() && y.is_finite() && is_max_width_finite) {
+ return;
+ }
+
let style = self.state.borrow().fill_style.to_fill_or_stroke_style();
- self.send_canvas_2d_msg(Canvas2dMsg::FillText(parsed_text, x, y, max_width, style));
+ self.send_canvas_2d_msg(Canvas2dMsg::FillText(text.into(), x, y, max_width, style));
}
// https://html.spec.whatwg.org/multipage/#textmetrics