From 61909e56c933db4c81622d1555470add8f8314af Mon Sep 17 00:00:00 2001 From: baldurk Date: Wed, 3 Dec 2014 10:29:31 +0000 Subject: [PATCH] Handle shader being deleted before detach (just drop the detach) --- renderdoc/driver/gl/wrappers/gl_shader_funcs.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/renderdoc/driver/gl/wrappers/gl_shader_funcs.cpp b/renderdoc/driver/gl/wrappers/gl_shader_funcs.cpp index c52a8e188..9ded08283 100644 --- a/renderdoc/driver/gl/wrappers/gl_shader_funcs.cpp +++ b/renderdoc/driver/gl/wrappers/gl_shader_funcs.cpp @@ -282,7 +282,9 @@ void WrappedOpenGL::glDetachShader(GLuint program, GLuint shader) { m_Real.glDetachShader(program, shader); - if(m_State >= WRITING) + // check that shader still exists, it might have been deleted. If it has, it's not too important + // that we detach the shader (only important if the program will attach it elsewhere). + if(m_State >= WRITING && program != 0 && shader != 0 && GetResourceManager()->HasCurrentResource(ShaderRes(GetCtx(), shader))) { GLResourceRecord *progRecord = GetResourceManager()->GetResourceRecord(ProgramRes(GetCtx(), program)); RDCASSERT(progRecord);