svx/source/unogallery/unogaltheme.cxx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
New commits: commit 5d9181f479513826d0eedc49520ede7f05b6f7b5 Author: Mike Kaganski <mike.kagan...@collabora.com> AuthorDate: Thu Aug 22 11:08:42 2024 +0200 Commit: Xisco Fauli <xiscofa...@libreoffice.org> CommitDate: Fri Aug 23 13:19:13 2024 +0200 tdf#162555: change rtl::Reference creation order GalleryDrawingModel takes ownership of passed model; so when it gets destroyed, the model is destroyed, too. Destroying SdrPage tries to set the model modified. Change-Id: I2f00f21ee8b74711fb62e409351cbdb33abe5f0a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172196 Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com> Tested-by: Jenkins (cherry picked from commit 0afb4cfc5ed1e926dfd287007c5a35585584daec) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172201 Reviewed-by: Michael Stahl <michael.st...@allotropia.de> diff --git a/svx/source/unogallery/unogaltheme.cxx b/svx/source/unogallery/unogaltheme.cxx index 27f2afd3b360..de016a7b61e4 100644 --- a/svx/source/unogallery/unogaltheme.cxx +++ b/svx/source/unogallery/unogaltheme.cxx @@ -255,11 +255,13 @@ void SAL_CALL GalleryTheme::update( ) if (pOrigPage && pOrigModel) { FmFormModel* pTmpModel = new FmFormModel(&pOrigModel->GetItemPool()); + // tdf#162555: xDrawing should be created before pNewPage, because it controls + // the lifetime of pTmpModel used by the latter + rtl::Reference< GalleryDrawingModel > xDrawing( new GalleryDrawingModel( pTmpModel ) ); // Clone to new target SdrModel rtl::Reference<SdrPage> pNewPage = pOrigPage->CloneSdrPage(*pTmpModel); pTmpModel->InsertPage(pNewPage.get(), 0); - rtl::Reference< GalleryDrawingModel > xDrawing( new GalleryDrawingModel( pTmpModel ) ); pTmpModel->setUnoModel( xDrawing ); nRet = insertDrawingByIndex( xDrawing, nIndex );