Skip to content
Permalink
Browse files

Use QgsFields::rename instead of QgsField::setName when modifying the…

… name of a field inside an existing QgsFields.

This is done to avoid corruption of internal nameToIndex data structure.
  • Loading branch information
obrix
obrix committed Jan 23, 2020
1 parent 2ddcf00 commit 2540f0fa73300133b374c30fbb65de835e8a54a7
@@ -154,7 +154,7 @@ QVariantMap QgsJoinByAttributeAlgorithm::processAlgorithm( const QVariantMap &pa
{
for ( int i = 0; i < outFields2.count(); ++i )
{
outFields2[ i ].setName( prefix + outFields2[ i ].name() );
outFields2.rename( i, prefix + outFields2[ i ].name() );
}
}

@@ -159,7 +159,7 @@ QVariantMap QgsJoinByLocationAlgorithm::processAlgorithm( const QVariantMap &par
{
for ( int i = 0; i < joinFields.count(); ++i )
{
joinFields[ i ].setName( prefix + joinFields[ i ].name() );
joinFields.rename( i, prefix + joinFields[ i ].name() );
}
}

@@ -160,7 +160,7 @@ QVariantMap QgsJoinByNearestAlgorithm::processAlgorithm( const QVariantMap &para
{
for ( int i = 0; i < outFields2.count(); ++i )
{
outFields2[ i ].setName( prefix + outFields2[ i ].name() );
outFields2.rename( i, prefix + outFields2[ i ].name() );
}
}

@@ -90,7 +90,7 @@ QgsFields QgsRenameTableFieldAlgorithm::outputFields( const QgsFields &inputFiel
if ( outFields.lookupField( mNewName ) >= 0 )
throw QgsProcessingException( QObject::tr( "A field already exists with the name %1" ).arg( mNewName ) );

outFields[ index ].setName( mNewName );
outFields.rename( index, mNewName );
return outFields;
}

@@ -276,7 +276,7 @@ QgsVectorLayerExporter::exportLayer( QgsVectorLayer *layer,
// convert field names to lowercase
for ( int fldIdx = 0; fldIdx < fields.count(); ++fldIdx )
{
fields[fldIdx].setName( fields.at( fldIdx ).name().toLower() );
fields.rename( fldIdx, fields.at( fldIdx ).name().toLower() );
}
}

0 comments on commit 2540f0f

Please sign in to comment.
You can’t perform that action at this time.