@@ -654,7 +654,20 @@ int QgsGrassProvider::openLayer( QString gisdbase, QString location, QString map
654
654
layer.nUsers = 1 ;
655
655
656
656
// Open map
657
- layer.mapId = openMap ( gisdbase, location, mapset, mapName );
657
+ QgsGrass::init ();
658
+ QgsGrass::resetError ();
659
+ if ( setjmp ( QgsGrass::fatalErrorEnv () ) == 0 )
660
+ {
661
+ layer.mapId = openMap ( gisdbase, location, mapset, mapName );
662
+ }
663
+ QgsGrass::clearErrorEnv ();
664
+
665
+ if ( QgsGrass::getError () == QgsGrass::FATAL )
666
+ {
667
+ QgsDebugMsg ( QString ( " Cannot open vector map: %1" ).arg ( QgsGrass::getErrorMessage () ) );
668
+ return -1 ;
669
+ }
670
+
658
671
if ( layer.mapId < 0 )
659
672
{
660
673
QgsDebugMsg ( " Cannot open vector map" );
@@ -671,7 +684,7 @@ int QgsGrassProvider::openLayer( QString gisdbase, QString location, QString map
671
684
// Add new layer to layers
672
685
mLayers .push_back ( layer );
673
686
674
- QgsDebugMsg ( QString ( " New layer successfully opened%1" ).arg ( layer.nAttributes ) );
687
+ QgsDebugMsg ( QString ( " New layer successfully opened: %1" ).arg ( layer.nAttributes ) );
675
688
676
689
return mLayers .size () - 1 ;
677
690
}
@@ -946,7 +959,7 @@ void QgsGrassProvider::closeLayer( int layerId )
946
959
delete[] mLayers [layerId].minmax ;
947
960
948
961
// Field info
949
- free ( mLayers [layerId].fieldInfo );
962
+ G_free ( mLayers [layerId].fieldInfo );
950
963
951
964
closeMap ( mLayers [layerId].mapId );
952
965
}
0 commit comments