diff options
author | Martin Andersson <martin.andersson@evoma.se> | 2022-11-17 14:37:05 +0100 |
---|---|---|
committer | Paul Lemire <paul.lemire@kdab.com> | 2022-12-16 09:54:21 +0000 |
commit | bffdaabaa5cd9d7fdc64e4124817b504319708e1 (patch) | |
tree | bdfa610f96c3d0b142f90a3416116a8bf659fc56 /src | |
parent | 2280f17ad2fda7501eb2b4023f3244940cee02a1 (diff) | |
download | qt3d-bffdaabaa5cd9d7fdc64e4124817b504319708e1.tar.gz |
Handle nullptr returned from the shader manager
Sometimes the shader manager returns a nullptr when fetching the shader from a handle, so the return value needs to be checked before it is accessed.
Pick-to: 6.5 6.4 5.15
Change-Id: Ia021cd8f22ceb2626a7a2734b7e346fbcc8e0301
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/plugins/renderers/opengl/renderer/renderer.cpp | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/plugins/renderers/opengl/renderer/renderer.cpp b/src/plugins/renderers/opengl/renderer/renderer.cpp index 13eb85d6f..e9a2ffe48 100644 --- a/src/plugins/renderers/opengl/renderer/renderer.cpp +++ b/src/plugins/renderers/opengl/renderer/renderer.cpp @@ -1064,6 +1064,9 @@ void Renderer::sendShaderChangesToFrontend(Qt3DCore::QAspectManager *manager) const std::vector<HShader> &activeShaders = m_nodesManager->shaderManager()->activeHandles(); for (const HShader &handle :activeShaders) { Shader *s = m_nodesManager->shaderManager()->data(handle); + if (!s) + continue; + if (s->requiresFrontendSync()) { QShaderProgram *frontend = static_cast<decltype(frontend)>(manager->lookupNode(s->peerId())); // Could happen as a backend shader might live beyong the frontend |