From 3b7c0f8579b57c26a849cddae8b0a23cd8a806bc Mon Sep 17 00:00:00 2001 From: Alessandro Pasotti Date: Tue, 28 May 2019 11:21:17 +0200 Subject: [PATCH] Fix crash when exporting layout Fixes #29798 --- src/core/layout/qgslayoutmultiframe.cpp | 27 ++++++++++++++----------- 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/src/core/layout/qgslayoutmultiframe.cpp b/src/core/layout/qgslayoutmultiframe.cpp index 9a75be7e8ca..7849da282ec 100644 --- a/src/core/layout/qgslayoutmultiframe.cpp +++ b/src/core/layout/qgslayoutmultiframe.cpp @@ -385,20 +385,23 @@ void QgsLayoutMultiFrame::handlePageChange() } } - //page number of the last item - QgsLayoutFrame *lastFrame = mFrameItems.last(); - int lastItemPage = mLayout->pageCollection()->predictPageNumberForPoint( lastFrame->pos() ); - - for ( int i = lastItemPage + 1; i < mLayout->pageCollection()->pageCount(); ++i ) + if ( mFrameItems.count( ) ) { - //copy last frame to current page - std::unique_ptr< QgsLayoutFrame > newFrame = qgis::make_unique< QgsLayoutFrame >( mLayout, this ); + //page number of the last item + QgsLayoutFrame *lastFrame = mFrameItems.last(); + int lastItemPage = mLayout->pageCollection()->predictPageNumberForPoint( lastFrame->pos() ); - newFrame->attemptSetSceneRect( QRectF( lastFrame->pos().x(), - mLayout->pageCollection()->page( i )->pos().y() + lastFrame->pagePos().y(), - lastFrame->rect().width(), lastFrame->rect().height() ) ); - lastFrame = newFrame.get(); - addFrame( newFrame.release(), false ); + for ( int i = lastItemPage + 1; i < mLayout->pageCollection()->pageCount(); ++i ) + { + //copy last frame to current page + std::unique_ptr< QgsLayoutFrame > newFrame = qgis::make_unique< QgsLayoutFrame >( mLayout, this ); + + newFrame->attemptSetSceneRect( QRectF( lastFrame->pos().x(), + mLayout->pageCollection()->page( i )->pos().y() + lastFrame->pagePos().y(), + lastFrame->rect().width(), lastFrame->rect().height() ) ); + lastFrame = newFrame.get(); + addFrame( newFrame.release(), false ); + } } recalculateFrameSizes();