Fix crashes when attempting to export reprojected raster layers

Fixes #33801
This commit is contained in:
Nyall Dawson 2020-01-17 12:15:40 +10:00
parent 065c25c72c
commit bbd055ca13

View File

@ -523,6 +523,9 @@ QgsRasterFileWriter::WriterError QgsRasterFileWriter::writeDataRaster( const Qgs
{ {
partDestProvider->setNoDataValue( i, destNoDataValueList.value( i - 1 ) ); partDestProvider->setNoDataValue( i, destNoDataValueList.value( i - 1 ) );
} }
if ( destBlockList[ i - 1 ]->isEmpty() )
continue;
if ( !partDestProvider->write( destBlockList[i - 1]->bits( 0 ), i, iterCols, iterRows, 0, 0 ) ) if ( !partDestProvider->write( destBlockList[i - 1]->bits( 0 ), i, iterCols, iterRows, 0, 0 ) )
{ {
return WriteError; return WriteError;
@ -536,6 +539,9 @@ QgsRasterFileWriter::WriterError QgsRasterFileWriter::writeDataRaster( const Qgs
//loop over data //loop over data
for ( int i = 1; i <= nBands; ++i ) for ( int i = 1; i <= nBands; ++i )
{ {
if ( destBlockList[ i - 1 ]->isEmpty() )
continue;
if ( !destProvider->write( destBlockList[i - 1]->bits( 0 ), i, iterCols, iterRows, iterLeft, iterTop ) ) if ( !destProvider->write( destBlockList[i - 1]->bits( 0 ), i, iterCols, iterRows, iterLeft, iterTop ) )
{ {
return WriteError; return WriteError;
@ -643,7 +649,7 @@ QgsRasterFileWriter::WriterError QgsRasterFileWriter::writeImageRaster( QgsRaste
std::unique_ptr< QgsRasterBlock > inputBlock; std::unique_ptr< QgsRasterBlock > inputBlock;
while ( iter->readNextRasterPart( 1, iterCols, iterRows, inputBlock, iterLeft, iterTop ) ) while ( iter->readNextRasterPart( 1, iterCols, iterRows, inputBlock, iterLeft, iterTop ) )
{ {
if ( !inputBlock ) if ( !inputBlock || inputBlock->isEmpty() )
{ {
continue; continue;
} }