oox/source/docprop/ooxmldocpropimport.cxx | 7 ++++++- sd/qa/unit/data/pptx/tdf93097.pptx |binary sd/qa/unit/import-tests.cxx | 12 ++++++++++++ 3 files changed, 18 insertions(+), 1 deletion(-)
New commits: commit d5220fcd4d2583ce7fdfaad4cc5ea2ca881f8c37 Author: Miklos Vajna <[email protected]> Date: Fri Sep 4 11:49:25 2015 +0200 tdf#93097 oox: fix import of metadata from non-relative stream paths Commit ef2668bad976f1fbb70759887cafd35ea7833655 (PPTX import: fix missing document metadata, 2014-08-28) implemented metadata import for the PPTX filter, but in case the metadata stream is not an existing one, then OHierarchyHolder_Impl::GetListPathFromString() invoked by OStorage::openStreamElementByHierarchicalName() throws. The bugdoc is generated by a 3rd-party tool that always starts the stream path with a slash, and MSO seems to just ignore that: so let's do the same to be able to open the document. (cherry picked from commit 46cf9bb76b29f2bfa6639d9aaf4f26dee365bc0c) Conflicts: sd/qa/unit/import-tests.cxx Change-Id: I6c0715adeb19b9055669f6a45055415dd2c44e28 Reviewed-on: https://gerrit.libreoffice.org/18372 Reviewed-by: Caolán McNamara <[email protected]> Tested-by: Caolán McNamara <[email protected]> diff --git a/oox/source/docprop/ooxmldocpropimport.cxx b/oox/source/docprop/ooxmldocpropimport.cxx index c711f2f..646c09c 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 new file mode 100644 index 0000000..687110d Binary files /dev/null and b/sd/qa/unit/data/pptx/tdf93097.pptx differ diff --git a/sd/qa/unit/import-tests.cxx b/sd/qa/unit/import-tests.cxx index 024801b..c928341 100644 --- a/sd/qa/unit/import-tests.cxx +++ b/sd/qa/unit/import-tests.cxx @@ -97,6 +97,7 @@ public: void testPDFImport(); void testPDFImportSkipImages(); void testBnc910045(); + void testTdf93097(); CPPUNIT_TEST_SUITE(SdImportTest); @@ -132,6 +133,7 @@ public: CPPUNIT_TEST(testPDFImport); CPPUNIT_TEST(testPDFImportSkipImages); CPPUNIT_TEST(testBnc910045); + CPPUNIT_TEST(testTdf93097); CPPUNIT_TEST_SUITE_END(); }; @@ -1137,6 +1139,16 @@ void SdImportTest::testBnc910045() CPPUNIT_ASSERT_EQUAL(sal_Int32(5210557), nColor); } +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();
_______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
