From 7edd60b35b49f73ef96b2ae4d74a1db42f5c4a7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Tue, 1 Sep 2020 18:39:56 +0200 Subject: GLFramebuffer: Avoid calling method on a partially destroyed GLContext This avoid an ASAN runtime error. --- source/blender/gpu/opengl/gl_framebuffer.cc | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'source/blender/gpu/opengl/gl_framebuffer.cc') diff --git a/source/blender/gpu/opengl/gl_framebuffer.cc b/source/blender/gpu/opengl/gl_framebuffer.cc index d7dd5fa23a4..c97f4e2a270 100644 --- a/source/blender/gpu/opengl/gl_framebuffer.cc +++ b/source/blender/gpu/opengl/gl_framebuffer.cc @@ -75,7 +75,13 @@ GLFrameBuffer::GLFrameBuffer( GLFrameBuffer::~GLFrameBuffer() { if (context_ != NULL) { - context_->fbo_free(fbo_id_); + if (context_ == GPU_context_active_get()) { + /* Context might be partially freed. This happens when destroying the window framebuffers. */ + glDeleteFramebuffers(1, &fbo_id_); + } + else { + context_->fbo_free(fbo_id_); + } /* Restore default framebuffer if this framebuffer was bound. */ if (context_->active_fb == this && context_->back_left != this) { /* If this assert triggers it means the framebuffer is being freed while in use by another -- cgit v1.2.3