From a2cc42e52daa0dd31a4ea46bfc924f5192095d5b Mon Sep 17 00:00:00 2001 From: Martin Dobias Date: Fri, 21 Feb 2025 11:13:34 +0100 Subject: [PATCH] Fix assert when trying to find a child node not yet populated --- src/3d/qgspointcloudlayerchunkloader_p.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/3d/qgspointcloudlayerchunkloader_p.cpp b/src/3d/qgspointcloudlayerchunkloader_p.cpp index 51ebde4dda5..f0c3c3e3b14 100644 --- a/src/3d/qgspointcloudlayerchunkloader_p.cpp +++ b/src/3d/qgspointcloudlayerchunkloader_p.cpp @@ -255,6 +255,9 @@ static QgsChunkNode *findChunkNodeFromNodeId( QgsChunkNode *rootNode, QgsPointCl QgsPointCloudNodeId p = parentIds.takeLast(); QgsChunkNodeId childNodeId( p.d(), p.x(), p.y(), p.z() ); + if ( !chunk->hasChildrenPopulated() ) + return nullptr; + QgsChunkNode *chunkChild = nullptr; QgsChunkNode *const *children = chunk->children(); for ( int i = 0; i < chunk->childCount(); ++i ) @@ -287,9 +290,11 @@ QgsPointCloudLayerChunkedEntity::QgsPointCloudLayerChunkedEntity( Qgs3DMapSettin mChunkUpdaterFactory.reset( new QgsChunkUpdaterFactory( mChunkLoaderFactory ) ); connect( pcl, &QgsPointCloudLayer::chunkAttributeValuesChanged, this, [this]( const QgsPointCloudNodeId &n ) { - QList nodes; - nodes << findChunkNodeFromNodeId( mRootNode, n ); - updateNodes( nodes, mChunkUpdaterFactory.get() ); + QgsChunkNode *node = findChunkNodeFromNodeId( mRootNode, n ); + if ( node ) + { + updateNodes( QList() << node, mChunkUpdaterFactory.get() ); + } } ); } }