Skip to content

Commit 7e0cd9a

Browse files
committed
Fix QgsFields::lookupField returns bad result for empty field name
QString::isNull vs ::isEmpty strikes again!
1 parent dccd00d commit 7e0cd9a

File tree

2 files changed

+8
-1
lines changed

2 files changed

+8
-1
lines changed

src/core/qgsfields.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -290,6 +290,9 @@ QIcon QgsFields::iconForField( int fieldIdx ) const
290290

291291
int QgsFields::lookupField( const QString& fieldName ) const
292292
{
293+
if ( fieldName.isEmpty() ) //shortcut
294+
return -1;
295+
293296
for ( int idx = 0; idx < count(); ++idx )
294297
{
295298
if ( d->fields[idx].field.name() == fieldName )
@@ -305,7 +308,7 @@ int QgsFields::lookupField( const QString& fieldName ) const
305308
for ( int idx = 0; idx < count(); ++idx )
306309
{
307310
QString alias = d->fields[idx].field.alias();
308-
if ( !alias.isNull() && QString::compare( alias, fieldName, Qt::CaseInsensitive ) == 0 )
311+
if ( !alias.isEmpty() && QString::compare( alias, fieldName, Qt::CaseInsensitive ) == 0 )
309312
return idx;
310313
}
311314

tests/src/core/testqgsfields.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -335,8 +335,12 @@ void TestQgsFields::indexFromName()
335335
QgsField field2( QStringLiteral( "testfield2" ) );
336336
fields.append( field2 );
337337
QgsField field3( QStringLiteral( "testfield3" ) );
338+
field3.setAlias( QStringLiteral( "" ) );
338339
fields.append( field3 );
339340

341+
QCOMPARE( fields.lookupField( QString( "" ) ), -1 );
342+
QCOMPARE( fields.lookupField( QString() ), -1 );
343+
340344
QCOMPARE( fields.indexFromName( QString( "bad" ) ), -1 );
341345
QCOMPARE( fields.lookupField( QString( "bad" ) ), -1 );
342346
QCOMPARE( fields.indexFromName( QString( "testfield" ) ), 0 );

0 commit comments

Comments
 (0)