From 9441c0aa1d67591803f6524cd08e2ac72e77365f Mon Sep 17 00:00:00 2001 From: Baldur Karlsson Date: Tue, 24 Jun 2014 15:53:19 +0100 Subject: [PATCH] glDetachShader should remove, not add the shader if unlinked --- renderdoc/driver/gl/wrappers/gl_shader_funcs.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/renderdoc/driver/gl/wrappers/gl_shader_funcs.cpp b/renderdoc/driver/gl/wrappers/gl_shader_funcs.cpp index a32022645..f729288f8 100644 --- a/renderdoc/driver/gl/wrappers/gl_shader_funcs.cpp +++ b/renderdoc/driver/gl/wrappers/gl_shader_funcs.cpp @@ -224,7 +224,17 @@ bool WrappedOpenGL::Serialise_glDetachShader(GLuint program, GLuint shader) ResourceId liveShadId = GetResourceManager()->GetLiveID(shadid); if(!m_Programs[liveProgId].linked) - m_Programs[liveProgId].shaders.push_back(liveShadId); + { + for(auto it = m_Programs[liveProgId].shaders.begin(); + it != m_Programs[liveProgId].shaders.end(); ++it) + { + if(*it == liveShadId) + { + m_Programs[liveProgId].shaders.erase(it); + break; + } + } + } m_Real.glDetachShader(GetResourceManager()->GetLiveResource(progid).name, GetResourceManager()->GetLiveResource(shadid).name);