aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/webglrenderingcontext.rs
diff options
context:
space:
mode:
authorAnthony Ramine <n.oxyde@gmail.com>2018-07-09 10:32:09 +0200
committerAnthony Ramine <n.oxyde@gmail.com>2018-07-09 15:27:51 +0200
commitef7d495838f039111459a93bc5c9816f22062a2e (patch)
treedf5ad9c1821de4c8a752382554e47cf02d313df9 /components/script/dom/webglrenderingcontext.rs
parentfc0e403fb0791d29cdb3d66b9460675807f5c695 (diff)
downloadservo-ef7d495838f039111459a93bc5c9816f22062a2e.tar.gz
servo-ef7d495838f039111459a93bc5c9816f22062a2e.zip
Properly implement the checks for gl.renderbufferStorage (fixes #20563)
Diffstat (limited to 'components/script/dom/webglrenderingcontext.rs')
-rw-r--r--components/script/dom/webglrenderingcontext.rs21
1 files changed, 4 insertions, 17 deletions
diff --git a/components/script/dom/webglrenderingcontext.rs b/components/script/dom/webglrenderingcontext.rs
index 3988c93646f..34d085d7f6b 100644
--- a/components/script/dom/webglrenderingcontext.rs
+++ b/components/script/dom/webglrenderingcontext.rs
@@ -3863,27 +3863,14 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
}
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.7
- fn RenderbufferStorage(&self, target: u32, internal_format: u32,
- width: i32, height: i32) {
- // From the GLES 2.0.25 spec:
- //
- // "target must be RENDERBUFFER."
+ fn RenderbufferStorage(&self, target: u32, internal_format: u32, width: i32, height: i32) {
if target != constants::RENDERBUFFER {
return self.webgl_error(InvalidEnum);
}
- // From the GLES 2.0.25 spec:
- //
- // "If either width or height is greater than the value of
- // MAX_RENDERBUFFER_SIZE , the error INVALID_VALUE is
- // generated."
- //
- // and we have to throw out negative-size values as well just
- // like for TexImage.
- //
- // FIXME: Handle max_renderbuffer_size, which doesn't seem to
- // be in limits.
- if width < 0 || height < 0 {
+ let max = self.limits.max_renderbuffer_size;
+
+ if width < 0 || width as u32 > max || height < 0 || height as u32 > max {
return self.webgl_error(InvalidValue);
}