Description
In qt3d/src/plugins/renderers/opengl/renderer/renderer.cpp, line 1427, Renderer::cleanupShader the input Shader *shader is sometimes null. This causes a crash as it is dereferenced (shader->peerId()) without checking for null.
void Renderer::cleanupShader(const Shader *shader) { GLShaderManager *glShaderManager = m_glResourceManagers->glShaderManager(); GLShader *glShader = glShaderManager->lookupResource(shader->peerId()); if (glShader != nullptr) glShaderManager->abandon(glShader, shader); }
Adding a simple check for null fixes the crash.
void Renderer::cleanupShader(const Shader *shader) { if (!shader) return; GLShaderManager *glShaderManager = m_glResourceManagers->glShaderManager(); GLShader *glShader = glShaderManager->lookupResource(shader->peerId()); if (glShader != nullptr) glShaderManager->abandon(glShader, shader); }
Attachments
For Gerrit Dashboard: QTBUG-100568 | ||||||
---|---|---|---|---|---|---|
# | Subject | Branch | Project | Status | CR | V |
394527,2 | Fix crash in Renderer::cleanupShader | dev | qt/qt3d | Status: MERGED | +2 | 0 |
395182,2 | Fix crash in Renderer::cleanupShader | 6.3 | qt/qt3d | Status: MERGED | +2 | 0 |