@@ -463,6 +463,13 @@ void QgsMapRenderer::render( QPainter* painter, double* forceWidthScale )
463
463
QgsDebugMsg ( " Caching enabled but layer redraw forced by extent change or empty cache" );
464
464
QImage * mypImage = new QImage ( mRenderContext .painter ()->device ()->width (),
465
465
mRenderContext .painter ()->device ()->height (), QImage::Format_ARGB32 );
466
+ if ( mypImage->isNull () )
467
+ {
468
+ QgsDebugMsg ( " insufficient memory for image " + QString::number (mRenderContext .painter ()->device ()->width ()) + " x" + QString::number (mRenderContext .painter ()->device ()->height ()) );
469
+ emit drawError ( ml );
470
+ painter->end (); // drawError is not caught by anyone, so we end painting to notify caller
471
+ return ;
472
+ }
466
473
mypImage->fill ( 0 );
467
474
ml->setCacheImage ( mypImage ); // no need to delete the old one, maplayer does it for you
468
475
QPainter * mypPainter = new QPainter ( ml->cacheImage () );
@@ -501,6 +508,13 @@ void QgsMapRenderer::render( QPainter* painter, double* forceWidthScale )
501
508
flattenedLayer = true ;
502
509
mypFlattenedImage = new QImage ( mRenderContext .painter ()->device ()->width (),
503
510
mRenderContext .painter ()->device ()->height (), QImage::Format_ARGB32 );
511
+ if ( mypFlattenedImage->isNull () )
512
+ {
513
+ QgsDebugMsg ( " insufficient memory for image " + QString::number (mRenderContext .painter ()->device ()->width ()) + " x" + QString::number (mRenderContext .painter ()->device ()->height ()) );
514
+ emit drawError ( ml );
515
+ painter->end (); // drawError is not caught by anyone, so we end painting to notify caller
516
+ return ;
517
+ }
504
518
mypFlattenedImage->fill ( 0 );
505
519
QPainter * mypPainter = new QPainter ( mypFlattenedImage );
506
520
if ( mySettings.value ( " /qgis/enable_anti_aliasing" , true ).toBool () )
0 commit comments