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

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

Change-Id: Idfc44d90e4f73f23976e8648c504786955b4fce6
This commit is contained in:
Caolán McNamara 2015-12-23 21:22:58 +00:00
parent 33fac48280
commit a4764cfa80
3 changed files with 10 additions and 5 deletions

View File

@ -589,7 +589,7 @@ uno::Reference < embed::XEmbeddedObject > EmbeddedObjectContainer::InsertEmbedde
return xRet; return xRet;
} }
uno::Reference < embed::XEmbeddedObject > EmbeddedObjectContainer::InsertEmbeddedObject( const css::uno::Sequence < css::beans::PropertyValue >& aMedium, OUString& rNewName ) uno::Reference < embed::XEmbeddedObject > EmbeddedObjectContainer::InsertEmbeddedObject( const css::uno::Sequence < css::beans::PropertyValue >& aMedium, OUString& rNewName, OUString const* pBaseURL )
{ {
if ( rNewName.isEmpty() ) if ( rNewName.isEmpty() )
rNewName = CreateUniqueObjectName(); rNewName = CreateUniqueObjectName();
@ -598,9 +598,14 @@ uno::Reference < embed::XEmbeddedObject > EmbeddedObjectContainer::InsertEmbedde
try try
{ {
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( 1 ); uno::Sequence< beans::PropertyValue > aObjDescr(pBaseURL ? 2 : 1);
aObjDescr[0].Name = "Parent"; aObjDescr[0].Name = "Parent";
aObjDescr[0].Value <<= pImpl->m_xModel.get(); aObjDescr[0].Value <<= pImpl->m_xModel.get();
if (pBaseURL)
{
aObjDescr[1].Name = "DefaultParentBaseURL";
aObjDescr[1].Value <<= *pBaseURL;
}
xObj.set( xFactory->createInstanceInitFromMediaDescriptor( xObj.set( xFactory->createInstanceInitFromMediaDescriptor(
pImpl->mxStorage, rNewName, aMedium, aObjDescr ), uno::UNO_QUERY ); pImpl->mxStorage, rNewName, aMedium, aObjDescr ), uno::UNO_QUERY );
uno::Reference < embed::XEmbedPersist > xPersist( xObj, uno::UNO_QUERY ); uno::Reference < embed::XEmbedPersist > xPersist( xObj, uno::UNO_QUERY );

View File

@ -6947,7 +6947,7 @@ css::uno::Reference < css::embed::XEmbeddedObject > SvxMSDffManager::CheckForCo
OUString aName( aDstStgName ); OUString aName( aDstStgName );
comphelper::EmbeddedObjectContainer aCnt( rDestStorage ); comphelper::EmbeddedObjectContainer aCnt( rDestStorage );
xObj = aCnt.InsertEmbeddedObject( aMedium, aName ); xObj = aCnt.InsertEmbeddedObject(aMedium, aName, &rBaseURL);
if ( !xObj.is() ) if ( !xObj.is() )
{ {
@ -6955,7 +6955,7 @@ css::uno::Reference < css::embed::XEmbeddedObject > SvxMSDffManager::CheckForCo
{ {
// throw the filter parameter away as workaround // throw the filter parameter away as workaround
aMedium.realloc( 2 ); aMedium.realloc( 2 );
xObj = aCnt.InsertEmbeddedObject( aMedium, aName ); xObj = aCnt.InsertEmbeddedObject(aMedium, aName, &rBaseURL);
} }
if ( !xObj.is() ) if ( !xObj.is() )

View File

@ -110,7 +110,7 @@ public:
// load an embedded object from a MediaDescriptor and insert it into the container // load an embedded object from a MediaDescriptor and insert it into the container
// a new object will be created from the new content and returned // a new object will be created from the new content and returned
css::uno::Reference < css::embed::XEmbeddedObject > css::uno::Reference < css::embed::XEmbeddedObject >
InsertEmbeddedObject( const css::uno::Sequence < css::beans::PropertyValue >&, OUString& ); InsertEmbeddedObject( const css::uno::Sequence < css::beans::PropertyValue >&, OUString& rName, OUString const* pBaseURL = nullptr);
// create an embedded link based on a MediaDescriptor and insert it into the container // create an embedded link based on a MediaDescriptor and insert it into the container
// a new object will be created from the new content and returned // a new object will be created from the new content and returned