@@ -168,6 +168,10 @@ QgsRasterFileWriter::WriterError QgsRasterFileWriter::writeDataRaster( QgsRaster
168168 QCoreApplication::processEvents ( QEventLoop::AllEvents, 1000 );
169169 if ( p->wasCanceled () )
170170 {
171+ for ( int i = 0 ; i < nBands; ++i )
172+ {
173+ CPLFree ( dataList[i] );
174+ }
171175 break ;
172176 }
173177 }
@@ -182,6 +186,7 @@ QgsRasterFileWriter::WriterError QgsRasterFileWriter::writeDataRaster( QgsRaster
182186 for ( int i = 1 ; i <= nBands; ++i )
183187 {
184188 destProvider->write ( dataList[i - 1 ], i, iterCols, iterRows, 0 , 0 );
189+ CPLFree ( dataList[i - 1 ] );
185190 addToVRT ( QString::number ( fileIndex ), i, iterCols, iterRows, iterLeft, iterTop );
186191 }
187192 }
@@ -191,8 +196,12 @@ QgsRasterFileWriter::WriterError QgsRasterFileWriter::writeDataRaster( QgsRaster
191196 for ( int i = 1 ; i <= nBands; ++i )
192197 {
193198 destProvider->write ( dataList[i - 1 ], i, iterCols, iterRows, iterLeft, iterTop );
199+ CPLFree ( dataList[i - 1 ] );
194200 }
195201 }
202+
203+
204+
196205 ++fileIndex;
197206 }
198207 return NoError;
@@ -257,6 +266,7 @@ QgsRasterFileWriter::WriterError QgsRasterFileWriter::writeImageRaster( QgsRaste
257266 {
258267 if ( iterCols <= 5 || iterRows <= 5 ) // some wms servers don't like small values
259268 {
269+ CPLFree ( data );
260270 continue ;
261271 }
262272
@@ -267,6 +277,7 @@ QgsRasterFileWriter::WriterError QgsRasterFileWriter::writeImageRaster( QgsRaste
267277 QCoreApplication::processEvents ( QEventLoop::AllEvents, 1000 );
268278 if ( p->wasCanceled () )
269279 {
280+ CPLFree ( data );
270281 break ;
271282 }
272283 }
@@ -287,6 +298,7 @@ QgsRasterFileWriter::WriterError QgsRasterFileWriter::writeImageRaster( QgsRaste
287298 memcpy (( char * )blueData + i, &blue, 1 );
288299 memcpy (( char * )alphaData + i, &alpha, 1 );
289300 }
301+ CPLFree ( data );
290302
291303 // create output file
292304 if ( mTiledMode )
@@ -317,7 +329,7 @@ QgsRasterFileWriter::WriterError QgsRasterFileWriter::writeImageRaster( QgsRaste
317329 ++fileIndex;
318330 }
319331 delete destProvider;
320- CPLFree ( data ); CPLFree ( redData ); CPLFree ( greenData ); CPLFree ( blueData ); CPLFree ( alphaData );
332+ CPLFree ( redData ); CPLFree ( greenData ); CPLFree ( blueData ); CPLFree ( alphaData );
321333
322334 if ( p )
323335 {
0 commit comments