Skip to content

Commit feaa8b8

Browse files
committedOct 20, 2017
[OGR provider] subLayers(): avoid emitting error on a geometry less layer
1 parent c130f9f commit feaa8b8

File tree

2 files changed

+11
-2
lines changed

2 files changed

+11
-2
lines changed
 

‎src/providers/ogr/qgsogrprovider.cpp

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -696,9 +696,9 @@ void QgsOgrProvider::addSubLayerDetailsToSubLayerList( int i, QgsOgrLayer *layer
696696
// Get first column name,
697697
// TODO: add support for multiple
698698
QString geometryColumnName;
699-
OGRGeomFieldDefnH geomH = fdef.GetGeomFieldDefn( 0 );
700-
if ( geomH )
699+
if ( fdef.GetGeomFieldCount() )
701700
{
701+
OGRGeomFieldDefnH geomH = fdef.GetGeomFieldDefn( 0 );
702702
geometryColumnName = QString::fromUtf8( OGR_GFld_GetNameRef( geomH ) );
703703
}
704704
QString layerName = QString::fromUtf8( layer->name() );
@@ -4648,6 +4648,12 @@ int QgsOgrFeatureDefn::GetFieldIndex( const QByteArray &name )
46484648
return OGR_FD_GetFieldIndex( get(), name.constData() );
46494649
}
46504650

4651+
int QgsOgrFeatureDefn::GetGeomFieldCount()
4652+
{
4653+
QMutexLocker locker( &mutex() );
4654+
return OGR_FD_GetGeomFieldCount( get() );
4655+
}
4656+
46514657
OGRGeomFieldDefnH QgsOgrFeatureDefn::GetGeomFieldDefn( int idx )
46524658
{
46534659
QMutexLocker locker( &mutex() );

‎src/providers/ogr/qgsogrprovider.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -402,6 +402,9 @@ class QgsOgrFeatureDefn
402402
//! Wrapper of OGR_FD_GetFieldIndex
403403
int GetFieldIndex( const QByteArray & );
404404

405+
//! Wrapper of OGR_FD_GetGeomFieldCount
406+
int GetGeomFieldCount();
407+
405408
//! Wrapper of OGR_FD_GetGeomFieldDefn
406409
OGRGeomFieldDefnH GetGeomFieldDefn( int idx );
407410

0 commit comments

Comments
 (0)
Please sign in to comment.