oox/source/docprop/ooxmldocpropimport.cxx | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-)
New commits: commit 0f0bd022b6f8ae89655a6e47964842086a9beb80 Author: Muthu Subramanian <[email protected]> Date: Tue Sep 11 12:44:44 2012 +0530 fdo#54609: Exception while importing xlsx. * Handle any exception thrown during document properties import. This is not so critical so as to stop the import. We anyways check for hasElements(). * Also lclGetRelatedStreams might throw IllegalArgumentException diff --git a/oox/source/docprop/ooxmldocpropimport.cxx b/oox/source/docprop/ooxmldocpropimport.cxx index 9339c53..9e513a2 100644 --- a/oox/source/docprop/ooxmldocpropimport.cxx +++ b/oox/source/docprop/ooxmldocpropimport.cxx @@ -68,7 +68,7 @@ Reference< XInterface > SAL_CALL DocumentPropertiesImport_createInstance( const namespace { -Sequence< InputSource > lclGetRelatedStreams( const Reference< XStorage >& rxStorage, const OUString& rStreamType ) throw (RuntimeException) +Sequence< InputSource > lclGetRelatedStreams( const Reference< XStorage >& rxStorage, const OUString& rStreamType ) throw (RuntimeException, IllegalArgumentException) { Reference< XRelationshipAccess > xRelation( rxStorage, UNO_QUERY_THROW ); Reference< XHierarchicalStorageAccess > xHierarchy( rxStorage, UNO_QUERY_THROW ); @@ -138,19 +138,26 @@ void SAL_CALL DocumentPropertiesImport::importProperties( const Reference< XStorage >& rxSource, const Reference< XDocumentProperties >& rxDocumentProperties ) throw (RuntimeException, IllegalArgumentException, SAXException, Exception) { + Sequence< InputSource > aCoreStreams; + Sequence< InputSource > aExtStreams; + Sequence< InputSource > aCustomStreams; + if( !mxContext.is() ) throw RuntimeException(); if( !rxSource.is() || !rxDocumentProperties.is() ) throw IllegalArgumentException(); - Sequence< InputSource > aCoreStreams = lclGetRelatedStreams( rxSource, CREATE_OFFICEDOC_RELATION_TYPE( "metadata/core-properties" ) ); - // MS Office seems to have a bug, so we have to do similar handling - if( !aCoreStreams.hasElements() ) - aCoreStreams = lclGetRelatedStreams( rxSource, CREATE_PACKAGE_RELATION_TYPE( "metadata/core-properties" ) ); + try { + aCoreStreams = lclGetRelatedStreams( rxSource, CREATE_OFFICEDOC_RELATION_TYPE( "metadata/core-properties" ) ); + // MS Office seems to have a bug, so we have to do similar handling + if( !aCoreStreams.hasElements() ) + aCoreStreams = lclGetRelatedStreams( rxSource, CREATE_PACKAGE_RELATION_TYPE( "metadata/core-properties" ) ); - Sequence< InputSource > aExtStreams = lclGetRelatedStreams( rxSource, CREATE_OFFICEDOC_RELATION_TYPE( "extended-properties" ) ); - Sequence< InputSource > aCustomStreams = lclGetRelatedStreams( rxSource, CREATE_OFFICEDOC_RELATION_TYPE( "custom-properties" ) ); + aExtStreams = lclGetRelatedStreams( rxSource, CREATE_OFFICEDOC_RELATION_TYPE( "extended-properties" ) ); + aCustomStreams = lclGetRelatedStreams( rxSource, CREATE_OFFICEDOC_RELATION_TYPE( "custom-properties" ) ); + } + catch(Exception) { } if( aCoreStreams.hasElements() || aExtStreams.hasElements() || aCustomStreams.hasElements() ) { _______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
