mirror of
https://github.com/servo/servo.git
synced 2025-08-05 13:40:08 +01:00
Auto merge of #20699 - simartin:issue_20593, r=nox
Issue #20593: Implement proper checks in WebGLRenderingContext's getFramebufferAttachmentParameter(). Add missing input checks. --- - [X] `./mach build -d` does not report any errors - [X] `./mach build-geckolib` does not report any errors - [X] `./mach test-tidy` does not report any errors - [X] These changes fix #20593 - [X] There are tests for these changes <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/20699) <!-- Reviewable:end -->
This commit is contained in:
commit
1f562af418
3 changed files with 154 additions and 1 deletions
|
@ -2379,7 +2379,36 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
|
|||
_ => false
|
||||
};
|
||||
|
||||
if !target_matches || !attachment_matches || !pname_matches {
|
||||
let bound_attachment_matches = match self.bound_framebuffer.get().unwrap().attachment(attachment) {
|
||||
Some(attachment_root) => {
|
||||
match attachment_root {
|
||||
WebGLFramebufferAttachmentRoot::Renderbuffer(_) => {
|
||||
match pname {
|
||||
constants::FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE |
|
||||
constants::FRAMEBUFFER_ATTACHMENT_OBJECT_NAME => true,
|
||||
_ => false
|
||||
}
|
||||
},
|
||||
WebGLFramebufferAttachmentRoot::Texture(_) => {
|
||||
match pname {
|
||||
constants::FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE |
|
||||
constants::FRAMEBUFFER_ATTACHMENT_OBJECT_NAME |
|
||||
constants::FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL |
|
||||
constants::FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE => true,
|
||||
_ => false
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
_ => {
|
||||
match pname {
|
||||
constants::FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE => true,
|
||||
_ => false
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
if !target_matches || !attachment_matches || !pname_matches || !bound_attachment_matches {
|
||||
self.webgl_error(InvalidEnum);
|
||||
return NullValue();
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue