sd/source/core/drawdoc3.cxx     |    5 ++---
 sd/source/ui/unoidl/unopage.cxx |    7 ++++++-
 sd/source/ui/view/drviewsb.cxx  |    3 ++-
 3 files changed, 10 insertions(+), 5 deletions(-)

New commits:
commit 960db01dbfe2f916b91782da03532fae1f836445
Author:     Caolán McNamara <caolan.mcnam...@collabora.com>
AuthorDate: Sat Dec 28 20:09:35 2024 +0000
Commit:     Caolán McNamara <caolan.mcnam...@collabora.com>
CommitDate: Sat Dec 28 22:13:40 2024 +0100

    Resolves: tdf#164463 we need to pass a copy of the LayoutName
    
    a reference means it can get updated to rName during the function and
    the comparisons fail.
    
    a problem since:
    
    commit 235c230cd348600ce7385cc580c45a7be3572704
    CommitDate: Tue Oct 22 09:17:02 2024 +0200
    
        We don't need a virtual here
    
    Change-Id: I2f4e19ffb21b56f3554837d700977bde45140e42
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/179494
    Reviewed-by: Caolán McNamara <caolan.mcnam...@collabora.com>
    Tested-by: Jenkins

diff --git a/sd/source/core/drawdoc3.cxx b/sd/source/core/drawdoc3.cxx
index 5df9ea0d7dfd..f04e56712940 100644
--- a/sd/source/core/drawdoc3.cxx
+++ b/sd/source/core/drawdoc3.cxx
@@ -106,10 +106,9 @@ void 
InsertBookmarkAsPage_FindDuplicateLayouts::operator()( SdDrawDocument& rDoc
             // about this
             if( bRenameDuplicates && aTest != SdResId( STR_LAYOUT_DEFAULT_NAME 
) && !(pTestPage->Equals(*pBMMPage)) )
             {
-                pBookmarkDoc->RenameLayoutTemplate(
-                    pBMMPage->GetLayoutName(), pBMMPage->GetName() + "_");
+                OUString aOldPageLayoutName = pBMMPage->GetLayoutName();
+                pBookmarkDoc->RenameLayoutTemplate(aOldPageLayoutName, 
pBMMPage->GetName() + "_");
                 aLayout = pBMMPage->GetName();
-
                 break;
             }
             else
diff --git a/sd/source/ui/unoidl/unopage.cxx b/sd/source/ui/unoidl/unopage.cxx
index 8183d6cfbfe6..a5899460e754 100644
--- a/sd/source/ui/unoidl/unopage.cxx
+++ b/sd/source/ui/unoidl/unopage.cxx
@@ -2984,7 +2984,12 @@ void SAL_CALL SdMasterPage::setName( const OUString& 
rName )
     GetPage()->SetName( rName );
 
     if( pDoc )
-        pDoc->RenameLayoutTemplate( GetPage()->GetLayoutName(), rName );
+    {
+        // tdf#164463 we need to pass a copy of the LayoutName here, a
+        // reference means it can get updated to rName during the function.
+        OUString aOldPageLayoutName = GetPage()->GetLayoutName();
+        pDoc->RenameLayoutTemplate(aOldPageLayoutName, rName);
+    }
 
     // fake a mode change to repaint the page tab bar
     ::sd::DrawDocShell* pDocSh = GetModel()->GetDocShell();
diff --git a/sd/source/ui/view/drviewsb.cxx b/sd/source/ui/view/drviewsb.cxx
index b585185c09d0..0f6d46460153 100644
--- a/sd/source/ui/view/drviewsb.cxx
+++ b/sd/source/ui/view/drviewsb.cxx
@@ -83,7 +83,8 @@ bool DrawViewShell::RenameSlide( sal_uInt16 nPageId, const 
OUString & rName  )
     {
         // rename MasterPage -> rename LayoutTemplate
         pPageToRename = GetDoc()->GetMasterSdPage( 
maTabControl->GetPagePos(nPageId), ePageKind );
-        GetDoc()->RenameLayoutTemplate( pPageToRename->GetLayoutName(), rName 
);
+        OUString aOldPageLayoutName = pPageToRename->GetLayoutName();
+        GetDoc()->RenameLayoutTemplate(aOldPageLayoutName, rName);
     }
 
     bool bSuccess = (rName == pPageToRename->GetName());

Reply via email to