aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/webglrenderingcontext.rs
diff options
context:
space:
mode:
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));
}