aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/webglrenderingcontext.rs
diff options
context:
space:
mode:
authorEric Anholt <eric@anholt.net>2016-10-23 16:09:59 -0700
committerEric Anholt <eric@anholt.net>2016-10-23 17:45:56 -0700
commit2f682970514455bd83ec2483651dc11b744e50d3 (patch)
tree8e75fb49649f18ba5107e5294c673d7935c64e97 /components/script/dom/webglrenderingcontext.rs
parent62689ba64deb5f0c93f2fe3dfd69258b21d2fb47 (diff)
downloadservo-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.rs17
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));
}