diff options
author | Simon Martin <simartin@users.sourceforge.net> | 2018-04-21 14:12:38 +0200 |
---|---|---|
committer | Simon Martin <simartin@users.sourceforge.net> | 2018-05-10 08:51:51 +0200 |
commit | c2fb588ac72b8d7f756a5b1fbd2f9daff2abb589 (patch) | |
tree | da4452ebd232bff2f9965e019aea2230070e1b9b /components/script/dom/webglbuffer.rs | |
parent | dc17b32cebc956385084288765c9f5a78e60ee28 (diff) | |
download | servo-c2fb588ac72b8d7f756a5b1fbd2f9daff2abb589.tar.gz servo-c2fb588ac72b8d7f756a5b1fbd2f9daff2abb589.zip |
Issue #20556: Implement proper checks in WebGLRenderingContext's bindBuffer().
Diffstat (limited to 'components/script/dom/webglbuffer.rs')
-rw-r--r-- | components/script/dom/webglbuffer.rs | 7 |
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 { |