[whatwg] Canvas API: What should happen if non-finite floats are used

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.

Received on Tuesday, 7 September 2010 22:32:36 UTC