@@ -501,12 +501,11 @@ QgsRasterFileWriter::WriterError QgsRasterFileWriter::writeImageRaster( QgsRaste
501
501
int fileIndex = 0 ;
502
502
503
503
// create destProvider for whole dataset here
504
- QgsRasterDataProvider *destProvider = nullptr ;
505
504
double pixelSize;
506
505
double geoTransform[6 ];
507
506
globalOutputParameters ( outputExtent, nCols, nRows, geoTransform, pixelSize );
508
507
509
- destProvider = initOutput ( nCols, nRows, crs, geoTransform, 4 , Qgis::Byte );
508
+ std::unique_ptr< QgsRasterDataProvider > destProvider ( initOutput ( nCols, nRows, crs, geoTransform, 4 , Qgis::Byte ) );
510
509
511
510
iter->startRasterRead ( 1 , nCols, nRows, outputExtent, feedback );
512
511
@@ -518,8 +517,8 @@ QgsRasterFileWriter::WriterError QgsRasterFileWriter::writeImageRaster( QgsRaste
518
517
nParts = nPartsX * nPartsY;
519
518
}
520
519
521
- QgsRasterBlock *inputBlock = nullptr ;
522
- while ( iter->readNextRasterPart ( 1 , iterCols, iterRows, & inputBlock, iterLeft, iterTop ) )
520
+ std::unique_ptr< QgsRasterBlock > inputBlock ;
521
+ while ( iter->readNextRasterPart ( 1 , iterCols, iterRows, inputBlock, iterLeft, iterTop ) )
523
522
{
524
523
if ( !inputBlock )
525
524
{
@@ -531,7 +530,6 @@ QgsRasterFileWriter::WriterError QgsRasterFileWriter::writeImageRaster( QgsRaste
531
530
feedback->setProgress ( 100.0 * fileIndex / static_cast < double >( nParts ) );
532
531
if ( feedback->isCanceled () )
533
532
{
534
- delete inputBlock;
535
533
break ;
536
534
}
537
535
}
@@ -564,16 +562,15 @@ QgsRasterFileWriter::WriterError QgsRasterFileWriter::writeImageRaster( QgsRaste
564
562
memcpy ( reinterpret_cast < char * >( blueData ) + i, &blue, 1 );
565
563
memcpy ( reinterpret_cast < char * >( alphaData ) + i, &alpha, 1 );
566
564
}
567
- delete inputBlock;
568
565
569
566
// create output file
570
567
if ( mTiledMode )
571
568
{
572
569
// delete destProvider;
573
- QgsRasterDataProvider *partDestProvider = createPartProvider ( outputExtent,
570
+ std::unique_ptr< QgsRasterDataProvider > partDestProvider ( createPartProvider ( outputExtent,
574
571
nCols, iterCols, iterRows,
575
572
iterLeft, iterTop, mOutputUrl , fileIndex,
576
- 4 , Qgis::Byte , crs );
573
+ 4 , Qgis::Byte , crs ) ) ;
577
574
578
575
if ( partDestProvider )
579
576
{
@@ -587,7 +584,6 @@ QgsRasterFileWriter::WriterError QgsRasterFileWriter::writeImageRaster( QgsRaste
587
584
addToVRT ( partFileName ( fileIndex ), 2 , iterCols, iterRows, iterLeft, iterTop );
588
585
addToVRT ( partFileName ( fileIndex ), 3 , iterCols, iterRows, iterLeft, iterTop );
589
586
addToVRT ( partFileName ( fileIndex ), 4 , iterCols, iterRows, iterLeft, iterTop );
590
- delete partDestProvider;
591
587
}
592
588
}
593
589
else if ( destProvider )
@@ -600,8 +596,7 @@ QgsRasterFileWriter::WriterError QgsRasterFileWriter::writeImageRaster( QgsRaste
600
596
601
597
++fileIndex;
602
598
}
603
-
604
- delete destProvider;
599
+ destProvider.reset ();
605
600
606
601
qgsFree ( redData );
607
602
qgsFree ( greenData );
0 commit comments