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 );

Reply via email to