diff options
author | Eric Anholt <eric@anholt.net> | 2016-10-23 16:09:59 -0700 |
---|---|---|
committer | Eric Anholt <eric@anholt.net> | 2016-10-23 17:45:56 -0700 |
commit | 2f682970514455bd83ec2483651dc11b744e50d3 (patch) | |
tree | 8e75fb49649f18ba5107e5294c673d7935c64e97 /components/script/dom/webglrenderingcontext.rs | |
parent | 62689ba64deb5f0c93f2fe3dfd69258b21d2fb47 (diff) | |
download | servo-2f682970514455bd83ec2483651dc11b744e50d3.tar.gz servo-2f682970514455bd83ec2483651dc11b744e50d3.zip |
webgl: Allow TexImage data argument to be larger than necessary.
texture-size-limit.html is using a large array for all of its calls at
various sizes, and we were throwing errors on the calls that should
have passed.
Diffstat (limited to 'components/script/dom/webglrenderingcontext.rs')
-rw-r--r-- | components/script/dom/webglrenderingcontext.rs | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/components/script/dom/webglrenderingcontext.rs b/components/script/dom/webglrenderingcontext.rs index 45633a14b8e..abfa10983b0 100644 --- a/components/script/dom/webglrenderingcontext.rs +++ b/components/script/dom/webglrenderingcontext.rs @@ -2359,7 +2359,13 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext { Some(data) => data, }; - if buff.len() != expected_byte_length as usize { + // From the WebGL spec: + // + // "If pixels is non-null but its size is less than what + // is required by the specified width, height, format, + // type, and pixel storage parameters, generates an + // INVALID_OPERATION error." + if buff.len() < expected_byte_length as usize { return Ok(self.webgl_error(InvalidOperation)); } @@ -2459,8 +2465,13 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext { Some(data) => data, }; - if expected_byte_length != 0 && - buff.len() != expected_byte_length as usize { + // From the WebGL spec: + // + // "If pixels is non-null but its size is less than what + // is required by the specified width, height, format, + // type, and pixel storage parameters, generates an + // INVALID_OPERATION error." + if buff.len() < expected_byte_length as usize { return Ok(self.webgl_error(InvalidOperation)); } |