comphelper/source/container/embeddedobjectcontainer.cxx  |   17 +++++----------
 include/comphelper/embeddedobjectcontainer.hxx           |    9 +------
 sc/source/filter/excel/xiescher.cxx                      |    2 -
 svx/source/unodraw/unoshap4.cxx                          |    5 ----
 sw/source/core/unocore/unoframe.cxx                      |    2 -
 sw/source/writerfilter/ooxml/OOXMLFastContextHandler.cxx |    4 ---
 6 files changed, 12 insertions(+), 27 deletions(-)

New commits:
commit d62a29c705af34d54dffe919897b3ecf91168a71
Author:     Noel Grandin <noel.gran...@collabora.co.uk>
AuthorDate: Tue Sep 16 11:48:06 2025 +0200
Commit:     Noel Grandin <noel.gran...@collabora.co.uk>
CommitDate: Tue Sep 16 15:01:59 2025 +0200

    simplify EmbeddedObjectContainer::CreateEmbeddedObject
    
    dont need the variant that passes extra params, we already take that param
    
    but convert that extra parameter from a pointer to a std::optional,
    because some of the call sites pass a temporary OUString, and taking
    the address of a temporary is a no-no.
    
    Change-Id: I4d55f01a14230f5c64a052a143666a08bfcbf704
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/191021
    Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk>
    Tested-by: Jenkins

diff --git a/comphelper/source/container/embeddedobjectcontainer.cxx 
b/comphelper/source/container/embeddedobjectcontainer.cxx
index 16fa2bd97cdb..01470a0fdb2a 100644
--- a/comphelper/source/container/embeddedobjectcontainer.cxx
+++ b/comphelper/source/container/embeddedobjectcontainer.cxx
@@ -361,7 +361,8 @@ uno::Reference<embed::XEmbeddedObject> 
EmbeddedObjectContainer::Get_Impl(
 
 uno::Reference < embed::XEmbeddedObject > 
EmbeddedObjectContainer::CreateEmbeddedObject(
             const uno::Sequence < sal_Int8 >& rClassId,
-            const uno::Sequence < beans::PropertyValue >& rArgs, OUString& 
rNewName, OUString const* pBaseURL )
+            OUString& rNewName,
+            std::optional<OUString> oDefaultParentBaseURL )
 {
     if ( rNewName.isEmpty() )
         rNewName = CreateUniqueObjectName();
@@ -374,17 +375,16 @@ uno::Reference < embed::XEmbeddedObject > 
EmbeddedObjectContainer::CreateEmbedde
     {
         uno::Reference < embed::XEmbeddedObjectCreator > xFactory = 
embed::EmbeddedObjectCreator::create( 
::comphelper::getProcessComponentContext() );
 
-        const size_t nExtraArgs = pBaseURL ? 2 : 1;
-        uno::Sequence< beans::PropertyValue > aObjDescr( rArgs.getLength() + 
nExtraArgs );
+        const size_t nArgs = oDefaultParentBaseURL.has_value() ? 2 : 1;
+        uno::Sequence< beans::PropertyValue > aObjDescr( nArgs );
         auto pObjDescr = aObjDescr.getArray();
         pObjDescr[0].Name = "Parent";
         pObjDescr[0].Value <<= pImpl->m_xModel.get();
-        if (pBaseURL)
+        if (oDefaultParentBaseURL.has_value())
         {
             pObjDescr[1].Name = "DefaultParentBaseURL";
-            pObjDescr[1].Value <<= *pBaseURL;
+            pObjDescr[1].Value <<= *oDefaultParentBaseURL;
         }
-        std::copy( rArgs.begin(), rArgs.end(), pObjDescr + nExtraArgs );
         xObj.set( xFactory->createInstanceInitNew(
                     rClassId, OUString(), pImpl->mxStorage, rNewName,
                     aObjDescr ), uno::UNO_QUERY );
@@ -402,11 +402,6 @@ uno::Reference < embed::XEmbeddedObject > 
EmbeddedObjectContainer::CreateEmbedde
     return xObj;
 }
 
-uno::Reference < embed::XEmbeddedObject > 
EmbeddedObjectContainer::CreateEmbeddedObject( const uno::Sequence < sal_Int8 
>& rClassId, OUString& rNewName, OUString const* pBaseURL )
-{
-    return CreateEmbeddedObject( rClassId, uno::Sequence < 
beans::PropertyValue >(), rNewName, pBaseURL );
-}
-
 void EmbeddedObjectContainer::AddEmbeddedObject(
             const css::uno::Reference < css::embed::XEmbeddedObject >& xObj, 
const OUString& rName )
 {
diff --git a/include/comphelper/embeddedobjectcontainer.hxx 
b/include/comphelper/embeddedobjectcontainer.hxx
index ed3d0e1f9109..21714da3b3e9 100644
--- a/include/comphelper/embeddedobjectcontainer.hxx
+++ b/include/comphelper/embeddedobjectcontainer.hxx
@@ -25,6 +25,7 @@
 
 #include <rtl/ustring.hxx>
 #include <memory>
+#include <optional>
 
 namespace com::sun::star::beans { struct PropertyValue; }
 namespace com::sun::star::embed { class XEmbeddedObject; }
@@ -106,13 +107,7 @@ public:
     css::uno::Reference < css::embed::XEmbeddedObject > CreateEmbeddedObject(
                         const css::uno::Sequence < sal_Int8 >& rClassId,
                         OUString& rNewName,
-                        OUString const* pBaseURL = nullptr );
-
-    css::uno::Reference < css::embed::XEmbeddedObject > CreateEmbeddedObject(
-                        const css::uno::Sequence < sal_Int8 >& rClassId,
-                        const css::uno::Sequence < css::beans::PropertyValue 
>& rArgs,
-                        OUString& rNewName,
-                        OUString const* pBaseURL = nullptr );
+                        std::optional<OUString> oDefaultParentBaseURL = 
std::nullopt );
 
     // insert an embedded object into the container - objects persistent 
representation will be added to the storage
     bool            InsertEmbeddedObject(
diff --git a/sc/source/filter/excel/xiescher.cxx 
b/sc/source/filter/excel/xiescher.cxx
index 2796c6f9a006..2b55fbce4ca3 100644
--- a/sc/source/filter/excel/xiescher.cxx
+++ b/sc/source/filter/excel/xiescher.cxx
@@ -1766,7 +1766,7 @@ rtl::Reference<SdrObject> XclImpChartObj::DoCreateSdrObj( 
XclImpDffConverter& rD
         OUString aEmbObjName;
         OUString sBaseURL(GetRoot().GetMedium().GetBaseURL());
         Reference< XEmbeddedObject > xEmbObj = 
pDocShell->GetEmbeddedObjectContainer().
-                CreateEmbeddedObject( SvGlobalName( SO3_SCH_CLASSID 
).GetByteSequence(), aEmbObjName, &sBaseURL );
+                CreateEmbeddedObject( SvGlobalName( SO3_SCH_CLASSID 
).GetByteSequence(), aEmbObjName, sBaseURL );
 
         if (!xEmbObj)
             return xSdrObj;
diff --git a/svx/source/unodraw/unoshap4.cxx b/svx/source/unodraw/unoshap4.cxx
index 7ef5d9b0007a..6681db290017 100644
--- a/svx/source/unodraw/unoshap4.cxx
+++ b/svx/source/unodraw/unoshap4.cxx
@@ -390,13 +390,10 @@ bool SvxOle2Shape::createObject( const SvGlobalName 
&aClassName )
     if( SvxShape::getPropertyValue( UNO_NAME_OLE2_PERSISTNAME ) >>= aTmpStr )
         aPersistName = aTmpStr;
 
-    uno::Sequence<beans::PropertyValue> objArgs( 
comphelper::InitPropertySequence({
-            { "DefaultParentBaseURL", Any(pPersist->getDocumentBaseURL()) }
-        }));
     //TODO/LATER: how to cope with creation failure?!
     uno::Reference<embed::XEmbeddedObject> xObj(
         pPersist->getEmbeddedObjectContainer().CreateEmbeddedObject(
-            aClassName.GetByteSequence(), objArgs, aPersistName));
+            aClassName.GetByteSequence(), aPersistName, 
pPersist->getDocumentBaseURL()));
     if( xObj.is() )
     {
         tools::Rectangle aRect = pOle2Obj->GetLogicRect();
diff --git a/sw/source/core/unocore/unoframe.cxx 
b/sw/source/core/unocore/unoframe.cxx
index 32651e47bf08..4b2577aa2d82 100644
--- a/sw/source/core/unocore/unoframe.cxx
+++ b/sw/source/core/unocore/unoframe.cxx
@@ -2882,7 +2882,7 @@ void 
SwXFrame::attachToRange(uno::Reference<text::XTextRange> const& xTextRange,
 
                 OUString sDocumentBaseURL = 
pDoc->GetPersist()->getDocumentBaseURL();
                 xIPObj = 
pCnt->CreateEmbeddedObject(aClassName.GetByteSequence(), aName,
-                                                    &sDocumentBaseURL);
+                                                    sDocumentBaseURL);
             }
             if ( xIPObj.is() )
             {
diff --git a/sw/source/writerfilter/ooxml/OOXMLFastContextHandler.cxx 
b/sw/source/writerfilter/ooxml/OOXMLFastContextHandler.cxx
index 74ae5ad44414..c183897e68b7 100644
--- a/sw/source/writerfilter/ooxml/OOXMLFastContextHandler.cxx
+++ b/sw/source/writerfilter/ooxml/OOXMLFastContextHandler.cxx
@@ -2482,10 +2482,8 @@ void OOXMLFastContextHandlerMath::process()
     SvGlobalName name( SO3_SM_CLASSID );
     comphelper::EmbeddedObjectContainer container;
     OUString aName;
-    uno::Sequence<beans::PropertyValue> objArgs{ comphelper::makePropertyValue(
-        u"DefaultParentBaseURL"_ustr, getDocument()->GetDocumentBaseURL()) };
     uno::Reference<embed::XEmbeddedObject> ref =
-        container.CreateEmbeddedObject(name.GetByteSequence(), objArgs, aName);
+        container.CreateEmbeddedObject(name.GetByteSequence(), aName, 
getDocument()->GetDocumentBaseURL());
     assert(ref.is());
     if (!ref.is())
         return;

Reply via email to