[Bf-blender-cvs] [5a957c02995] master: GPUShaderInterface: Fix use after free crash
Clément Foucault
noreply at git.blender.org
Thu Aug 20 17:57:14 CEST 2020
Commit: 5a957c0299539f571029d7d96ff77367a596eff2
Author: Clément Foucault
Date: Thu Aug 20 17:56:01 2020 +0200
Branches: master
https://developer.blender.org/rB5a957c0299539f571029d7d96ff77367a596eff2
GPUShaderInterface: Fix use after free crash
===================================================================
M source/blender/gpu/opengl/gl_batch.cc
M source/blender/gpu/opengl/gl_shader_interface.cc
===================================================================
diff --git a/source/blender/gpu/opengl/gl_batch.cc b/source/blender/gpu/opengl/gl_batch.cc
index 8dd4c6c21c0..9ca0a9f71db 100644
--- a/source/blender/gpu/opengl/gl_batch.cc
+++ b/source/blender/gpu/opengl/gl_batch.cc
@@ -171,10 +171,9 @@ void GLVaoCache::clear(void)
}
for (int i = 0; i < count; i++) {
- if (interfaces[i] == NULL) {
- continue;
+ if (interfaces[i] != NULL) {
+ const_cast<GLShaderInterface *>(interfaces[i])->ref_remove(this);
}
- const_cast<GLShaderInterface *>(interfaces[i])->ref_add(this);
}
if (is_dynamic_vao_count) {
diff --git a/source/blender/gpu/opengl/gl_shader_interface.cc b/source/blender/gpu/opengl/gl_shader_interface.cc
index ae292f6cc38..423db5c8c97 100644
--- a/source/blender/gpu/opengl/gl_shader_interface.cc
+++ b/source/blender/gpu/opengl/gl_shader_interface.cc
@@ -277,9 +277,9 @@ void GLShaderInterface::ref_add(GLVaoCache *ref)
void GLShaderInterface::ref_remove(GLVaoCache *ref)
{
- for (auto *ref_iter : refs_) {
- if (ref_iter == ref) {
- ref_iter = NULL;
+ for (int i = 0; i < refs_.size(); i++) {
+ if (refs_[i] == ref) {
+ refs_[i] = NULL;
break; /* cannot have duplicates */
}
}
More information about the Bf-blender-cvs
mailing list