From d257b7012f492f144b05126330874c6d0904beed Mon Sep 17 00:00:00 2001 From: Nyall Dawson Date: Thu, 2 Feb 2023 11:14:52 +1000 Subject: [PATCH] Fix crash when showing tooltips for invalid layers --- src/core/layertree/qgslayertreemodel.cpp | 4 ++-- src/core/layertree/qgslayertreemodellegendnode.cpp | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/core/layertree/qgslayertreemodel.cpp b/src/core/layertree/qgslayertreemodel.cpp index 46bd4fce507b..59092d1b6983 100644 --- a/src/core/layertree/qgslayertreemodel.cpp +++ b/src/core/layertree/qgslayertreemodel.cpp @@ -179,7 +179,7 @@ QVariant QgsLayerTreeModel::data( const QModelIndex &index, int role ) const QgsVectorLayer *vlayer = qobject_cast( nodeLayer->layer() ); if ( vlayer && nodeLayer->customProperty( QStringLiteral( "showFeatureCount" ), 0 ).toInt() && role == Qt::DisplayRole ) { - const bool estimatedCount = QgsDataSourceUri( vlayer->dataProvider()->dataSourceUri() ).useEstimatedMetadata(); + const bool estimatedCount = vlayer->dataProvider() ? QgsDataSourceUri( vlayer->dataProvider()->dataSourceUri() ).useEstimatedMetadata() : false; const qlonglong count = vlayer->featureCount(); // if you modify this line, please update QgsSymbolLegendNode::updateLabel @@ -322,7 +322,7 @@ QVariant QgsLayerTreeModel::data( const QModelIndex &index, int role ) const QgsLayerTreeLayer *nodeLayer = QgsLayerTree::toLayer( node ); const bool showFeatureCount = nodeLayer->customProperty( QStringLiteral( "showFeatureCount" ), 0 ).toBool(); - const bool estimatedCount = QgsDataSourceUri( layer->dataProvider()->dataSourceUri() ).useEstimatedMetadata(); + const bool estimatedCount = layer->dataProvider() ? QgsDataSourceUri( layer->dataProvider()->dataSourceUri() ).useEstimatedMetadata() : false; if ( showFeatureCount && estimatedCount ) { parts << tr( "Feature count is estimated : the feature count is determined by the database statistics" ); diff --git a/src/core/layertree/qgslayertreemodellegendnode.cpp b/src/core/layertree/qgslayertreemodellegendnode.cpp index 416241183788..c4a6be1494c5 100644 --- a/src/core/layertree/qgslayertreemodellegendnode.cpp +++ b/src/core/layertree/qgslayertreemodellegendnode.cpp @@ -845,7 +845,7 @@ void QgsSymbolLegendNode::updateLabel() if ( showFeatureCount && vl ) { - const bool estimatedCount = QgsDataSourceUri( vl->dataProvider()->dataSourceUri() ).useEstimatedMetadata(); + const bool estimatedCount = vl->dataProvider() ? QgsDataSourceUri( vl->dataProvider()->dataSourceUri() ).useEstimatedMetadata() : false; const qlonglong count = mEmbeddedInParent ? vl->featureCount() : vl->featureCount( mItem.ruleKey() ) ; // if you modify this line, please update QgsLayerTreeModel::data (DisplayRole)