From 0e9a3c95cb955b099e07d9bfa5808c02a66070f5 Mon Sep 17 00:00:00 2001 From: Alessandro Pasotti Date: Tue, 28 May 2019 11:21:17 +0200 Subject: [PATCH 1/2] Fix crash when exporting layout Fixes #29798 --- src/core/layout/qgslayoutmultiframe.cpp | 29 ++++++++++++++----------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/src/core/layout/qgslayoutmultiframe.cpp b/src/core/layout/qgslayoutmultiframe.cpp index 9a75be7e8ca9..7849da282ec7 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 ); - - 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 ); + //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 ) + { + //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(); From 2ecb3228760244d3c9df362673046a57a77db357 Mon Sep 17 00:00:00 2001 From: Alessandro Pasotti Date: Tue, 28 May 2019 11:56:40 +0200 Subject: [PATCH 2/2] Update src/core/layout/qgslayoutmultiframe.cpp --- src/core/layout/qgslayoutmultiframe.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/layout/qgslayoutmultiframe.cpp b/src/core/layout/qgslayoutmultiframe.cpp index 7849da282ec7..c3e4ced0a5dc 100644 --- a/src/core/layout/qgslayoutmultiframe.cpp +++ b/src/core/layout/qgslayoutmultiframe.cpp @@ -385,7 +385,7 @@ void QgsLayoutMultiFrame::handlePageChange() } } - if ( mFrameItems.count( ) ) + if ( !mFrameItems.empty() ) { //page number of the last item QgsLayoutFrame *lastFrame = mFrameItems.last();