From bbd055ca13a3d6ee150251222d73e3b9e76d94c5 Mon Sep 17 00:00:00 2001 From: Nyall Dawson Date: Fri, 17 Jan 2020 12:15:40 +1000 Subject: [PATCH] Fix crashes when attempting to export reprojected raster layers Fixes #33801 --- src/core/raster/qgsrasterfilewriter.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/core/raster/qgsrasterfilewriter.cpp b/src/core/raster/qgsrasterfilewriter.cpp index ad4da938e55c..45ccd56215ed 100644 --- a/src/core/raster/qgsrasterfilewriter.cpp +++ b/src/core/raster/qgsrasterfilewriter.cpp @@ -523,6 +523,9 @@ QgsRasterFileWriter::WriterError QgsRasterFileWriter::writeDataRaster( const Qgs { 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 ) ) { return WriteError; @@ -536,6 +539,9 @@ QgsRasterFileWriter::WriterError QgsRasterFileWriter::writeDataRaster( const Qgs //loop over data 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 ) ) { return WriteError; @@ -643,7 +649,7 @@ QgsRasterFileWriter::WriterError QgsRasterFileWriter::writeImageRaster( QgsRaste std::unique_ptr< QgsRasterBlock > inputBlock; while ( iter->readNextRasterPart( 1, iterCols, iterRows, inputBlock, iterLeft, iterTop ) ) { - if ( !inputBlock ) + if ( !inputBlock || inputBlock->isEmpty() ) { continue; }