[Libreoffice-commits] .: oox/source

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Tue Sep 11 00:10:48 PDT 2012


 oox/source/docprop/ooxmldocpropimport.cxx |   21 ++++++++++++++-------
 1 file changed, 14 insertions(+), 7 deletions(-)

New commits:
commit 0f0bd022b6f8ae89655a6e47964842086a9beb80
Author: Muthu Subramanian <sumuthu at suse.com>
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() )
     {


More information about the Libreoffice-commits mailing list