From 83f17ac59f5ae93dae31c7033a10e870c4bb6987 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Fri, 16 Mar 2018 17:44:20 -0400 Subject: [PATCH 1/2] OGLShader: Fix mismatched assignment in compute shader constructor This shouldn't be assigning to the regular ID. --- Source/Core/VideoBackends/OGL/OGLShader.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Source/Core/VideoBackends/OGL/OGLShader.cpp b/Source/Core/VideoBackends/OGL/OGLShader.cpp index 62c17752f8..e881269524 100644 --- a/Source/Core/VideoBackends/OGL/OGLShader.cpp +++ b/Source/Core/VideoBackends/OGL/OGLShader.cpp @@ -30,7 +30,8 @@ OGLShader::OGLShader(ShaderStage stage, GLenum gl_type, GLuint shader_id) } OGLShader::OGLShader(GLuint compute_program_id) - : AbstractShader(ShaderStage::Compute), m_type(GL_COMPUTE_SHADER), m_id(compute_program_id) + : AbstractShader(ShaderStage::Compute), m_type(GL_COMPUTE_SHADER), + m_compute_program_id(compute_program_id) { } From 882d1c1256e7f8fa9d0414522b4dd776c0c9e652 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Fri, 16 Mar 2018 17:47:33 -0400 Subject: [PATCH 2/2] OGLShader: Ensure m_id and m_compute_program_id are always initialized Depending on which constructor is invoked, m_id or m_compute_program_id can end up in an uninitialized state. We should ensure that the object is completely initialized to something deterministic regardless of the constructor taken. --- Source/Core/VideoBackends/OGL/OGLShader.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Source/Core/VideoBackends/OGL/OGLShader.h b/Source/Core/VideoBackends/OGL/OGLShader.h index 981c835cc1..e3036044f6 100644 --- a/Source/Core/VideoBackends/OGL/OGLShader.h +++ b/Source/Core/VideoBackends/OGL/OGLShader.h @@ -31,8 +31,8 @@ public: private: GLenum m_type; - GLuint m_id; - GLuint m_compute_program_id; + GLuint m_id = 0; + GLuint m_compute_program_id = 0; }; } // namespace OGL