In 4.8.11.1 the spec does state:
Except where otherwise specified, for the 2D context interface, any method
call with a numeric argument whose value is infinite or a NaN value must be
ignored.
-Sam
On Sep 7, 2010, at 9:41 PM, Boris Zbarsky wrote:
Consider this testcase:
!doctype html
html
body
canvas id=c width=200 height=200/canvas
script
try {
var c = document.getElementById(c),
t = c.getContext(2d);
t.moveTo(100, 100);
t.lineTo(NaN, NaN);
t.lineTo(50, 25);
t.stroke();
} catch (e) {alert(e); }
/script
/body
/html
Behavior in the spec seems to be undefined (in particular, no mention is made
as to what the canvas API functions are supposed to do if non-finite values
are passed in). Behavior in browsers is:
Presto: Throws NOT_SUPPORTED_ERR on that lineTo(NaN, NaN) call.
Gecko: Throws DOM_SYNTAX_ERR on that lineTo(NaN, NaN) call.
Webkit: Silently ignores the lineTo(NaN, NaN) call, and then
draws a line from (100,100) to (50, 25).
Seems like the spec needs to define this.
-Boris
P.S. This isn't a hypothetical issue; this came up in a page that was trying
to graph things using canvas and ending up with divide-by-0 all over the
place. It worked in webkit (though not drawing the right thing, so much).
It failed to draw anything in Presto or Gecko.