diff options
-rw-r--r-- | oox/source/docprop/ooxmldocpropimport.cxx | 7 | ||||
-rw-r--r-- | sd/qa/unit/data/pptx/tdf93097.pptx | bin | 0 -> 29386 bytes | |||
-rw-r--r-- | sd/qa/unit/import-tests.cxx | 12 |
3 files changed, 18 insertions, 1 deletions
diff --git a/oox/source/docprop/ooxmldocpropimport.cxx b/oox/source/docprop/ooxmldocpropimport.cxx index c711f2f97de7..646c09c68437 100644 --- a/oox/source/docprop/ooxmldocpropimport.cxx +++ b/oox/source/docprop/ooxmldocpropimport.cxx @@ -80,8 +80,13 @@ Sequence< InputSource > lclGetRelatedStreams( const Reference< XStorage >& rxSto const StringPair& rEntry = rEntries[ nEntryIndex ]; if ( rEntry.First == "Target" ) { + // The stream path is always a relative one, ignore the leading "/" if it's there. + OUString aStreamPath = rEntry.Second; + if (aStreamPath.startsWith("/")) + aStreamPath = aStreamPath.copy(1); + Reference< XExtendedStorageStream > xExtStream( - xHierarchy->openStreamElementByHierarchicalName( rEntry.Second, ElementModes::READ ), UNO_QUERY_THROW ); + xHierarchy->openStreamElementByHierarchicalName( aStreamPath, ElementModes::READ ), UNO_QUERY_THROW ); Reference< XInputStream > xInStream = xExtStream->getInputStream(); if( xInStream.is() ) { diff --git a/sd/qa/unit/data/pptx/tdf93097.pptx b/sd/qa/unit/data/pptx/tdf93097.pptx Binary files differnew file mode 100644 index 000000000000..687110db3540 --- /dev/null +++ b/sd/qa/unit/data/pptx/tdf93097.pptx diff --git a/sd/qa/unit/import-tests.cxx b/sd/qa/unit/import-tests.cxx index 7eb940372c02..68fe97051042 100644 --- a/sd/qa/unit/import-tests.cxx +++ b/sd/qa/unit/import-tests.cxx @@ -104,6 +104,7 @@ public: void testBnc910045(); void testRowHeight(); void testTdf93830(); + void testTdf93097(); CPPUNIT_TEST_SUITE(SdImportTest); @@ -144,6 +145,7 @@ public: CPPUNIT_TEST(testBnc910045); CPPUNIT_TEST(testRowHeight); CPPUNIT_TEST(testTdf93830); + CPPUNIT_TEST(testTdf93097); CPPUNIT_TEST_SUITE_END(); }; @@ -1224,6 +1226,16 @@ void SdImportTest::testTdf93830() xDocShRef->DoClose(); } +void SdImportTest::testTdf93097() +{ + // Throwing metadata import aborted the filter, check that metadata is now imported. + sd::DrawDocShellRef xDocShRef = loadURL(getURLFromSrc("/sd/qa/unit/data/pptx/tdf93097.pptx"), PPTX); + uno::Reference<document::XDocumentPropertiesSupplier> xDocumentPropertiesSupplier(xDocShRef->GetModel(), uno::UNO_QUERY); + uno::Reference<document::XDocumentProperties> xDocumentProperties = xDocumentPropertiesSupplier->getDocumentProperties(); + CPPUNIT_ASSERT_EQUAL(OUString("ss"), xDocumentProperties->getTitle()); + xDocShRef->DoClose(); +} + CPPUNIT_TEST_SUITE_REGISTRATION(SdImportTest); CPPUNIT_PLUGIN_IMPLEMENT(); |