diff options
author | Caolán McNamara <caolanm@redhat.com> | 2017-03-21 11:50:28 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2017-03-21 11:50:28 +0000 |
commit | ac655f20ad99bedd059ab2a046aa0a0ac2312beb (patch) | |
tree | 5e58775d0f2db7f819810664675a582e07de13d1 /filter | |
parent | 63a9cca54e589bfeff3f6214fc63e010f5662c1c (diff) |
ofz#923 don't crash on missing shell storage
Change-Id: I689fcf6b82d5df8121c1bb4ca1a92bf0f145d7f5
Diffstat (limited to 'filter')
-rw-r--r-- | filter/source/msfilter/svdfppt.cxx | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/filter/source/msfilter/svdfppt.cxx b/filter/source/msfilter/svdfppt.cxx index ed94ca963e50..92e5f8fa1be5 100644 --- a/filter/source/msfilter/svdfppt.cxx +++ b/filter/source/msfilter/svdfppt.cxx @@ -1901,14 +1901,18 @@ SdrObject* SdrPowerPointImport::ImportOLE( long nOLEId, aNm = pOe->pShell->getEmbeddedObjectContainer().CreateUniqueObjectName(); // object is not an own object - tools::SvRef<SotStorage> xTarget = SotStorage::OpenOLEStorage( pOe->pShell->GetStorage(), aNm, StreamMode::READWRITE ); - if ( xObjStor.is() && xTarget.is() ) + const css::uno::Reference < css::embed::XStorage >& rStorage = pOe->pShell->GetStorage(); + if (rStorage.is()) { - xObjStor->CopyTo( xTarget.get() ); - if( !xTarget->GetError() ) - xTarget->Commit(); + tools::SvRef<SotStorage> xTarget = SotStorage::OpenOLEStorage(rStorage, aNm, StreamMode::READWRITE); + if (xObjStor.is() && xTarget.is()) + { + xObjStor->CopyTo(xTarget.get()); + if (!xTarget->GetError()) + xTarget->Commit(); + } + xTarget.clear(); } - xTarget.clear(); uno::Reference < embed::XEmbeddedObject > xObj = pOe->pShell->getEmbeddedObjectContainer().GetEmbeddedObject( aNm ); |