diff --git a/src/core/qgsmaplayerregistry.cpp b/src/core/qgsmaplayerregistry.cpp index 2f7f49a0748..8e386bb9f2f 100644 --- a/src/core/qgsmaplayerregistry.cpp +++ b/src/core/qgsmaplayerregistry.cpp @@ -131,21 +131,23 @@ void QgsMapLayerRegistry::removeMapLayers( const QList& layers ) return; QStringList layerIds; + QList layerList; Q_FOREACH ( QgsMapLayer* layer, layers ) { - if ( layer ) + // check layer and the registry contains it + if ( layer && mMapLayers.contains( layer->id() ) ) + { layerIds << layer->id(); + layerList << layer; + } } emit layersWillBeRemoved( layerIds ); - emit layersWillBeRemoved( layers ); + emit layersWillBeRemoved( layerList ); - Q_FOREACH ( QgsMapLayer* lyr, layers ) + Q_FOREACH ( QgsMapLayer* lyr, layerList ) { - if ( !lyr ) - continue; - QString myId( lyr->id() ); emit layerWillBeRemoved( myId ); emit layerWillBeRemoved( lyr );