From ac8eab2fbb2b3bfa7e6fa251119e998a56276d46 Mon Sep 17 00:00:00 2001 From: Matthias Kuhn Date: Sun, 26 Aug 2018 10:24:34 +0200 Subject: [PATCH] Guard against layer nullptr --- src/gui/qgsmaptooladvanceddigitizing.cpp | 28 +++++++++++++++--------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/src/gui/qgsmaptooladvanceddigitizing.cpp b/src/gui/qgsmaptooladvanceddigitizing.cpp index ef4faf0557a..eb43bdb5b13 100644 --- a/src/gui/qgsmaptooladvanceddigitizing.cpp +++ b/src/gui/qgsmaptooladvanceddigitizing.cpp @@ -123,8 +123,12 @@ void QgsMapToolAdvancedDigitizing::activate() connect( mCadDockWidget, &QgsAdvancedDigitizingDockWidget::pointChanged, this, &QgsMapToolAdvancedDigitizing::cadPointChanged ); mCadDockWidget->enable(); mSnapToGridCanvasItem = new QgsSnapToGridCanvasItem( mCanvas ); - mSnapToGridCanvasItem->setCrs( currentVectorLayer()->crs() ); - mSnapToGridCanvasItem->setPrecision( currentVectorLayer()->geometryFixes()->geometryPrecision() ); + QgsVectorLayer *layer = currentVectorLayer(); + if ( layer ) + { + mSnapToGridCanvasItem->setCrs( currentVectorLayer()->crs() ); + mSnapToGridCanvasItem->setPrecision( currentVectorLayer()->geometryFixes()->geometryPrecision() ); + } mSnapToGridCanvasItem->setEnabled( mSnapToGridEnabled ); } @@ -146,16 +150,20 @@ void QgsMapToolAdvancedDigitizing::cadPointChanged( const QgsPointXY &point ) void QgsMapToolAdvancedDigitizing::onCurrentLayerChanged() { - QgsVectorLayer *layer = currentVectorLayer(); - if ( mSnapToGridCanvasItem && layer && mSnapToGridEnabled ) + if ( mSnapToGridCanvasItem ) { - mSnapToGridCanvasItem->setPrecision( layer->geometryFixes()->geometryPrecision() ); - mSnapToGridCanvasItem->setCrs( layer->crs() ); - mSnapToGridCanvasItem->setEnabled( true ); - } + QgsVectorLayer *layer = currentVectorLayer(); + if ( layer && mSnapToGridEnabled ) + { + mSnapToGridCanvasItem->setPrecision( layer->geometryFixes()->geometryPrecision() ); + mSnapToGridCanvasItem->setCrs( layer->crs() ); + } - if ( !layer ) - mSnapToGridCanvasItem->setEnabled( false ); + if ( !layer ) + mSnapToGridCanvasItem->setEnabled( false ); + else + mSnapToGridCanvasItem->setEnabled( mSnapToGridEnabled ); + } } bool QgsMapToolAdvancedDigitizing::snapToGridEnabled() const