Skip to content

Commit

Permalink
Avoid altering std::map while iterating over it (potentially unsafe)
Browse files Browse the repository at this point in the history
And avoid some double-lookups
  • Loading branch information
nyalldawson committed Nov 26, 2019
1 parent e3d2dcd commit bc6c3e5
Showing 1 changed file with 3 additions and 3 deletions.
6 changes: 3 additions & 3 deletions src/analysis/raster/qgsrastercalculator.cpp
Expand Up @@ -206,7 +206,7 @@ QgsRasterCalculator::Result QgsRasterCalculator::processCalculation( QgsFeedback
for ( auto &layerRef : inputBlocks )
{
QgsRasterCalculatorEntry ref = uniqueRasterEntries[layerRef.first];
if ( uniqueRasterEntries[layerRef.first].raster->crs() != mOutputCrs )
if ( ref.raster->crs() != mOutputCrs )
{
QgsRasterProjector proj;
proj.setCrs( ref.raster->crs(), mOutputCrs, mTransformContext );
Expand All @@ -216,7 +216,7 @@ QgsRasterCalculator::Result QgsRasterCalculator::processCalculation( QgsFeedback
}
else
{
inputBlocks[layerRef.first].reset( ref.raster->dataProvider()->block( ref.bandNumber, rect, mNumOutputColumns, 1 ) );
layerRef.second.reset( ref.raster->dataProvider()->block( ref.bandNumber, rect, mNumOutputColumns, 1 ) );
}
}

Expand All @@ -226,7 +226,7 @@ QgsRasterCalculator::Result QgsRasterCalculator::processCalculation( QgsFeedback
_rasterData.clear();
for ( const auto &layerRef : inputBlocks )
{
_rasterData.insert( layerRef.first, inputBlocks[layerRef.first].get() );
_rasterData.insert( layerRef.first, layerRef.second.get() );
}

if ( calcNode->calculate( _rasterData, resultMatrix, 0 ) )
Expand Down

0 comments on commit bc6c3e5

Please sign in to comment.