Kaydet (Commit) d9b58937 authored tarafından Caolán McNamara's avatar Caolán McNamara

crashtesting: fdo85994-1.doc assert on reexport to doc

try setting DefaultParentBaseURL based on the parent BaseURL
for objects created this way

Change-Id: I1a660ff6e4874321e0308d556c7ce0e10a2605fe
üst f6f73d2e
...@@ -368,7 +368,7 @@ uno::Reference<embed::XEmbeddedObject> EmbeddedObjectContainer::Get_Impl( ...@@ -368,7 +368,7 @@ uno::Reference<embed::XEmbeddedObject> EmbeddedObjectContainer::Get_Impl(
} }
uno::Reference < embed::XEmbeddedObject > EmbeddedObjectContainer::CreateEmbeddedObject( const uno::Sequence < sal_Int8 >& rClassId, uno::Reference < embed::XEmbeddedObject > EmbeddedObjectContainer::CreateEmbeddedObject( const uno::Sequence < sal_Int8 >& rClassId,
const uno::Sequence < beans::PropertyValue >& rArgs, OUString& rNewName ) const uno::Sequence < beans::PropertyValue >& rArgs, OUString& rNewName, OUString const* pBaseURL )
{ {
if ( rNewName.isEmpty() ) if ( rNewName.isEmpty() )
rNewName = CreateUniqueObjectName(); rNewName = CreateUniqueObjectName();
...@@ -381,10 +381,16 @@ uno::Reference < embed::XEmbeddedObject > EmbeddedObjectContainer::CreateEmbedde ...@@ -381,10 +381,16 @@ uno::Reference < embed::XEmbeddedObject > EmbeddedObjectContainer::CreateEmbedde
{ {
uno::Reference < embed::XEmbeddedObjectCreator > xFactory = embed::EmbeddedObjectCreator::create( ::comphelper::getProcessComponentContext() ); uno::Reference < embed::XEmbeddedObjectCreator > xFactory = embed::EmbeddedObjectCreator::create( ::comphelper::getProcessComponentContext() );
uno::Sequence< beans::PropertyValue > aObjDescr( rArgs.getLength() + 1 ); const size_t nExtraArgs = pBaseURL ? 2 : 1;
uno::Sequence< beans::PropertyValue > aObjDescr( rArgs.getLength() + nExtraArgs );
aObjDescr[0].Name = "Parent"; aObjDescr[0].Name = "Parent";
aObjDescr[0].Value <<= pImpl->m_xModel.get(); aObjDescr[0].Value <<= pImpl->m_xModel.get();
::std::copy( rArgs.begin(), rArgs.end(), aObjDescr.getArray() + 1 ); if (pBaseURL)
{
aObjDescr[1].Name = "DefaultParentBaseURL";
aObjDescr[1].Value <<= *pBaseURL;
}
::std::copy( rArgs.begin(), rArgs.end(), aObjDescr.getArray() + nExtraArgs );
xObj.set( xFactory->createInstanceInitNew( xObj.set( xFactory->createInstanceInitNew(
rClassId, OUString(), pImpl->mxStorage, rNewName, rClassId, OUString(), pImpl->mxStorage, rNewName,
aObjDescr ), uno::UNO_QUERY ); aObjDescr ), uno::UNO_QUERY );
...@@ -402,9 +408,9 @@ uno::Reference < embed::XEmbeddedObject > EmbeddedObjectContainer::CreateEmbedde ...@@ -402,9 +408,9 @@ uno::Reference < embed::XEmbeddedObject > EmbeddedObjectContainer::CreateEmbedde
return xObj; return xObj;
} }
uno::Reference < embed::XEmbeddedObject > EmbeddedObjectContainer::CreateEmbeddedObject( const uno::Sequence < sal_Int8 >& rClassId, OUString& rNewName ) 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 ); return CreateEmbeddedObject( rClassId, uno::Sequence < beans::PropertyValue >(), rNewName, pBaseURL );
} }
void EmbeddedObjectContainer::AddEmbeddedObject( const css::uno::Reference < css::embed::XEmbeddedObject >& xObj, const OUString& rName ) void EmbeddedObjectContainer::AddEmbeddedObject( const css::uno::Reference < css::embed::XEmbeddedObject >& xObj, const OUString& rName )
......
...@@ -98,11 +98,13 @@ public: ...@@ -98,11 +98,13 @@ public:
// create an object from a ClassId // create an object from a ClassId
css::uno::Reference < css::embed::XEmbeddedObject > css::uno::Reference < css::embed::XEmbeddedObject >
CreateEmbeddedObject( const css::uno::Sequence < sal_Int8 >&, OUString& ); CreateEmbeddedObject( const css::uno::Sequence < sal_Int8 >&, OUString&,
OUString const* pBaseURL = nullptr );
css::uno::Reference < css::embed::XEmbeddedObject > css::uno::Reference < css::embed::XEmbeddedObject >
CreateEmbeddedObject( const css::uno::Sequence < sal_Int8 >&, CreateEmbeddedObject( const css::uno::Sequence < sal_Int8 >&,
const css::uno::Sequence < css::beans::PropertyValue >&, OUString& ); const css::uno::Sequence < css::beans::PropertyValue >&, OUString&,
OUString const* pBaseURL = nullptr );
// insert an embedded object into the container - objects persistent representation will be added to the storage // insert an embedded object into the container - objects persistent representation will be added to the storage
bool InsertEmbeddedObject( const css::uno::Reference < css::embed::XEmbeddedObject >&, OUString& ); bool InsertEmbeddedObject( const css::uno::Reference < css::embed::XEmbeddedObject >&, OUString& );
......
...@@ -2924,7 +2924,10 @@ void SwXFrame::attachToRange(const uno::Reference< text::XTextRange > & xTextRan ...@@ -2924,7 +2924,10 @@ void SwXFrame::attachToRange(const uno::Reference< text::XTextRange > & xTextRan
pCnt.reset( new comphelper::EmbeddedObjectContainer ); pCnt.reset( new comphelper::EmbeddedObjectContainer );
OUString aName; OUString aName;
xIPObj = pCnt->CreateEmbeddedObject( aClassName.GetByteSequence(), aName );
OUString sDocumentBaseURL = pDoc->GetPersist()->getDocumentBaseURL();
xIPObj = pCnt->CreateEmbeddedObject(aClassName.GetByteSequence(), aName,
&sDocumentBaseURL);
} }
if ( xIPObj.is() ) if ( xIPObj.is() )
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment