Skip to content

Commit 7b7f34d

Browse files
author
jef
committed
apply r10580 to version 1.0
git-svn-id: http://svn.osgeo.org/qgis/branches/Version-1_0@10598 c8812cc2-4d05-0410-92ff-de0c093fc19c
1 parent e28c24c commit 7b7f34d

File tree

1 file changed

+21
-8
lines changed

1 file changed

+21
-8
lines changed

src/providers/grass/qgsgrassprovider.cpp

+21-8
Original file line numberDiff line numberDiff line change
@@ -293,7 +293,7 @@ bool QgsGrassProvider::nextFeature( QgsFeature& feature )
293293
int cat, type, id;
294294
unsigned char *wkb;
295295
int wkbsize;
296-
296+
297297
QgsDebugMsgLevel( "entered.", 3 );
298298

299299
if ( isEdited() || isFrozen() || !mValid )
@@ -318,7 +318,7 @@ bool QgsGrassProvider::nextFeature( QgsFeature& feature )
318318
QgsDebugMsg( QString( "cat = %1 type = %2 id = %3" ).arg( cat ).arg( type ).arg( id ) );
319319
#endif
320320

321-
feature.setFeatureId(id);
321+
feature.setFeatureId( id );
322322

323323
// TODO int may be 64 bits (memcpy)
324324
if ( type & ( GV_POINTS | GV_LINES ) ) /* points or lines */
@@ -651,7 +651,20 @@ int QgsGrassProvider::openLayer( QString gisdbase, QString location, QString map
651651
layer.nUsers = 1;
652652

653653
// Open map
654-
layer.mapId = openMap( gisdbase, location, mapset, mapName );
654+
QgsGrass::init();
655+
QgsGrass::resetError();
656+
if ( setjmp( QgsGrass::fatalErrorEnv() ) == 0 )
657+
{
658+
layer.mapId = openMap( gisdbase, location, mapset, mapName );
659+
}
660+
QgsGrass::clearErrorEnv();
661+
662+
if ( QgsGrass::getError() == QgsGrass::FATAL )
663+
{
664+
QgsDebugMsg( QString( "Cannot open vector map: %1" ).arg( QgsGrass::getErrorMessage() ) );
665+
return -1;
666+
}
667+
655668
if ( layer.mapId < 0 )
656669
{
657670
QgsDebugMsg( "Cannot open vector map" );
@@ -668,7 +681,7 @@ int QgsGrassProvider::openLayer( QString gisdbase, QString location, QString map
668681
// Add new layer to layers
669682
mLayers.push_back( layer );
670683

671-
QgsDebugMsg( QString( "New layer successfully opened%1" ).arg( layer.nAttributes ) );
684+
QgsDebugMsg( QString( "New layer successfully opened: %1" ).arg( layer.nAttributes ) );
672685

673686
return mLayers.size() - 1;
674687
}
@@ -943,7 +956,7 @@ void QgsGrassProvider::closeLayer( int layerId )
943956
delete[] mLayers[layerId].minmax;
944957

945958
// Field info
946-
free( mLayers[layerId].fieldInfo );
959+
G_free( mLayers[layerId].fieldInfo );
947960

948961
closeMap( mLayers[layerId].mapId );
949962
}
@@ -1149,11 +1162,11 @@ void QgsGrassProvider::closeMap( int mapId )
11491162

11501163
if ( mMaps[mapId].valid )
11511164
{
1152-
bool mapsetunset = G__getenv( "MAPSET" )==NULL || *G__getenv( "MAPSET" )==0;
1153-
if( mapsetunset )
1165+
bool mapsetunset = G__getenv( "MAPSET" ) == NULL || *G__getenv( "MAPSET" ) == 0;
1166+
if ( mapsetunset )
11541167
G__setenv(( char * )"MAPSET", mMaps[mapId].mapset.toAscii().data() );
11551168
Vect_close( mMaps[mapId].map );
1156-
if( mapsetunset )
1169+
if ( mapsetunset )
11571170
G__setenv(( char * )"MAPSET", "" );
11581171
}
11591172
mMaps[mapId].valid = false;

0 commit comments

Comments
 (0)