aboutsummaryrefslogtreecommitdiffstats
path: root/components/script
diff options
context:
space:
mode:
authorbors-servo <lbergstrom+bors@mozilla.com>2018-05-18 23:49:37 -0400
committerGitHub <noreply@github.com>2018-05-18 23:49:37 -0400
commitcb764be7cdb76b5bc23f21e86dac9e235de0b709 (patch)
tree0f89304a20fa156bd6b9ed7a657398e3b37c7c97 /components/script
parenta4b298c002fd0f029578f290c9c2594948fc8622 (diff)
parentc2fb588ac72b8d7f756a5b1fbd2f9daff2abb589 (diff)
downloadservo-cb764be7cdb76b5bc23f21e86dac9e235de0b709.tar.gz
servo-cb764be7cdb76b5bc23f21e86dac9e235de0b709.zip
Auto merge of #20674 - simartin:issue_20556, r=nox
Issue #20556: Implement proper checks in WebGLRenderingContext's bindBuffer() Implement missing check, about deleted buffers. --- - [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 #20556 - [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/20674) <!-- Reviewable:end -->
Diffstat (limited to 'components/script')
-rw-r--r--components/script/dom/webglbuffer.rs7
1 files changed, 7 insertions, 0 deletions
diff --git a/components/script/dom/webglbuffer.rs b/components/script/dom/webglbuffer.rs
index bcbeecdffb7..8c993d6bd7d 100644
--- a/components/script/dom/webglbuffer.rs
+++ b/components/script/dom/webglbuffer.rs
@@ -77,6 +77,9 @@ impl WebGLBuffer {
// NB: Only valid buffer targets come here
pub fn bind(&self, target: u32) -> WebGLResult<()> {
+ if self.is_deleted() || self.is_pending_delete() {
+ return Err(WebGLError::InvalidOperation);
+ }
if let Some(previous_target) = self.target.get() {
if target != previous_target {
return Err(WebGLError::InvalidOperation);
@@ -141,6 +144,10 @@ impl WebGLBuffer {
self.pending_delete.set(true);
}
+ pub fn is_pending_delete(&self) -> bool {
+ self.pending_delete.get()
+ }
+
pub fn add_vao_reference(&self, id: WebGLVertexArrayId) {
let mut vao_refs = self.vao_references.borrow_mut();
if let Some(ref mut vao_refs) = *vao_refs {