summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMartin Andersson <martin.andersson@evoma.se>2022-11-17 14:37:05 +0100
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2022-12-16 12:15:58 +0000
commitdc1f843c89ca233783771c747380ab96d63e20d8 (patch)
tree567b0bd8c335437e26577743dbe4da1e9e619000 /src
parentb59fdcefdbce6a1870e49b0da14d30b51293dea6 (diff)
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. Change-Id: Ia021cd8f22ceb2626a7a2734b7e346fbcc8e0301 Reviewed-by: Paul Lemire <paul.lemire@kdab.com> (cherry picked from commit bffdaabaa5cd9d7fdc64e4124817b504319708e1) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
Diffstat (limited to 'src')
-rw-r--r--src/plugins/renderers/opengl/renderer/renderer.cpp3
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 d8d24204d..7dcbbf184 100644
--- a/src/plugins/renderers/opengl/renderer/renderer.cpp
+++ b/src/plugins/renderers/opengl/renderer/renderer.cpp
@@ -1180,6 +1180,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