diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2020-02-10 07:59:56 +0100 |
---|---|---|
committer | Paul Lemire <paul.lemire@kdab.com> | 2020-02-10 10:44:52 +0100 |
commit | 547b0b00244f1535eab4456a02b75b46776eae51 (patch) | |
tree | 899a4c4f5e2c0cdc1d8de6613c431c25b09f8424 /src/render/framegraph | |
parent | 648b7459e8a6ce8ce1f115a14da63d546b743439 (diff) |
Check we remove a valid node when removing from node properties
Change-Id: Ibcc4d9bfd9d0a9d7697151915f24a6eecc149f6d
Reviewed-by: Mike Krus <mike.krus@kdab.com>
Diffstat (limited to 'src/render/framegraph')
-rw-r--r-- | src/render/framegraph/qlayerfilter.cpp | 3 | ||||
-rw-r--r-- | src/render/framegraph/qrenderpassfilter.cpp | 6 | ||||
-rw-r--r-- | src/render/framegraph/qrenderstateset.cpp | 3 | ||||
-rw-r--r-- | src/render/framegraph/qtechniquefilter.cpp | 6 |
4 files changed, 12 insertions, 6 deletions
diff --git a/src/render/framegraph/qlayerfilter.cpp b/src/render/framegraph/qlayerfilter.cpp index 8bad46f5d..5557687ce 100644 --- a/src/render/framegraph/qlayerfilter.cpp +++ b/src/render/framegraph/qlayerfilter.cpp @@ -214,8 +214,9 @@ void QLayerFilter::removeLayer(QLayer *layer) { Q_ASSERT(layer); Q_D(QLayerFilter); + if (!d->m_layers.removeOne(layer)) + return; d->updateNode(layer, "layer", Qt3DCore::PropertyValueRemoved); - d->m_layers.removeOne(layer); // Remove bookkeeping connection d->unregisterDestructionHelper(layer); } diff --git a/src/render/framegraph/qrenderpassfilter.cpp b/src/render/framegraph/qrenderpassfilter.cpp index 952657eb6..34462ebdf 100644 --- a/src/render/framegraph/qrenderpassfilter.cpp +++ b/src/render/framegraph/qrenderpassfilter.cpp @@ -151,8 +151,9 @@ void QRenderPassFilter::removeMatch(QFilterKey *filterKey) Q_ASSERT(filterKey); Q_D(QRenderPassFilter); + if (!d->m_matchList.removeOne(filterKey)) + return; d->updateNode(filterKey, "match", Qt3DCore::PropertyValueRemoved); - d->m_matchList.removeOne(filterKey); // Remove bookkeeping connection d->unregisterDestructionHelper(filterKey); } @@ -189,8 +190,9 @@ void QRenderPassFilter::removeParameter(QParameter *parameter) Q_ASSERT(parameter); Q_D(QRenderPassFilter); + if (!d->m_parameters.removeOne(parameter)) + return; d->updateNode(parameter, "parameter", Qt3DCore::PropertyValueRemoved); - d->m_parameters.removeOne(parameter); // Remove bookkeeping connection d->unregisterDestructionHelper(parameter); } diff --git a/src/render/framegraph/qrenderstateset.cpp b/src/render/framegraph/qrenderstateset.cpp index 5341b3c7d..ac82954c8 100644 --- a/src/render/framegraph/qrenderstateset.cpp +++ b/src/render/framegraph/qrenderstateset.cpp @@ -203,8 +203,9 @@ void QRenderStateSet::removeRenderState(QRenderState *state) Q_ASSERT(state); Q_D(QRenderStateSet); + if (!d->m_renderStates.removeOne(state)) + return; d->updateNode(state, "renderState", Qt3DCore::PropertyValueRemoved); - d->m_renderStates.removeOne(state); // Remove bookkeeping connection d->unregisterDestructionHelper(state); } diff --git a/src/render/framegraph/qtechniquefilter.cpp b/src/render/framegraph/qtechniquefilter.cpp index c22e83381..5377e1297 100644 --- a/src/render/framegraph/qtechniquefilter.cpp +++ b/src/render/framegraph/qtechniquefilter.cpp @@ -155,8 +155,9 @@ void QTechniqueFilter::removeMatch(QFilterKey *filterKey) { Q_ASSERT(filterKey); Q_D(QTechniqueFilter); + if (!d->m_matchList.removeOne(filterKey)) + return; d->updateNode(filterKey, "matchAll", Qt3DCore::PropertyValueRemoved); - d->m_matchList.removeOne(filterKey); // Remove bookkeeping connection d->unregisterDestructionHelper(filterKey); } @@ -192,8 +193,9 @@ void QTechniqueFilter::removeParameter(QParameter *parameter) { Q_ASSERT(parameter); Q_D(QTechniqueFilter); + if (!d->m_parameters.removeOne(parameter)) + return; d->updateNode(parameter, "parameter", Qt3DCore::PropertyValueRemoved); - d->m_parameters.removeOne(parameter); // Remove bookkeeping connection d->unregisterDestructionHelper(parameter); } |