[Libreoffice-commits] core.git: 2 commits - basic/source

Lionel Elie Mamane lionel at mamane.lu
Fri Aug 2 14:37:02 PDT 2013


 basic/source/uno/namecont.cxx |   45 +++++++++++++++++++-----------------------
 1 file changed, 21 insertions(+), 24 deletions(-)

New commits:
commit a43a18edb0023b2a9533e719c8cf3dd2f894dad7
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date:   Fri Aug 2 23:35:20 2013 +0200

    do *not* silently ignore errors when saving libraries
    
    In case of error, it leads to *data* *loss*.
    
    Change-Id: I80d806ef10a3364174eced3095ebf1ea217d75b4

diff --git a/basic/source/uno/namecont.cxx b/basic/source/uno/namecont.cxx
index e49a846..6257731 100644
--- a/basic/source/uno/namecont.cxx
+++ b/basic/source/uno/namecont.cxx
@@ -1924,7 +1924,7 @@ void SfxLibraryContainer::storeLibraries_Impl( const uno::Reference< embed::XSto
                             << rLib.aName << "\". Exception: "
                             << comphelper::anyToString(aError));
                     #endif
-                    return;
+                    throw;
                 }
             }
 
@@ -1954,6 +1954,7 @@ void SfxLibraryContainer::storeLibraries_Impl( const uno::Reference< embed::XSto
                     {
                         DBG_UNHANDLED_EXCEPTION();
                         // TODO: error handling
+                        throw;
                     }
                 }
             }
@@ -2033,6 +2034,7 @@ void SfxLibraryContainer::storeLibraries_Impl( const uno::Reference< embed::XSto
         catch( const Exception& )
         {
             DBG_UNHANDLED_EXCEPTION();
+            throw;
         }
     }
 
@@ -2384,7 +2386,7 @@ void SAL_CALL SfxLibraryContainer::loadLibrary( const OUString& Name )
                         << "\". Exception: "
                         << comphelper::anyToString(aError));
             #endif
-                return;
+                throw;
             }
         }
 
@@ -2418,12 +2420,7 @@ void SAL_CALL SfxLibraryContainer::loadLibrary( const OUString& Name )
                     aFile = aElementName;
                     aFile += ".";
                     aFile += maLibElementFileExtension;
-                    try
-                    {
-                        xElementStream = xLibraryStor->openStreamElement( aFile, embed::ElementModes::READ );
-                    }
-                    catch(const uno::Exception& )
-                    {}
+                    xElementStream = xLibraryStor->openStreamElement( aFile, embed::ElementModes::READ );
                 }
 
                 if ( xElementStream.is() )
@@ -2436,7 +2433,7 @@ void SAL_CALL SfxLibraryContainer::loadLibrary( const OUString& Name )
                         "basic",
                         "couldn't open library element stream - attempted to"
                             " open library \"" << Name << '"');
-                    return;
+                    throw RuntimeException("couln't open library element stream", *this);
                 }
             }
             else
commit fc9080a0c60f263d00eb71111fcda72b3c0a2ebb
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date:   Fri Aug 2 23:33:47 2013 +0200

    fdo#67685 open xSourceLibrariesStor only when needed
    
    else it keeps loadLibrary from completing,
    because the latter cannot open the storage
    because it is already open in read/write mode.
    
    Change-Id: Icd0aabfff6e67af2c38a8f9185f8485b46ab1516

diff --git a/basic/source/uno/namecont.cxx b/basic/source/uno/namecont.cxx
index edf724e..e49a846 100644
--- a/basic/source/uno/namecont.cxx
+++ b/basic/source/uno/namecont.cxx
@@ -1870,21 +1870,6 @@ void SfxLibraryContainer::storeLibraries_Impl( const uno::Reference< embed::XSto
             DBG_UNHANDLED_EXCEPTION();
             return;
         }
-
-        // open the source storage which might be used to copy yet-unmodified libraries
-        try
-        {
-            if ( mxStorage->hasByName( maLibrariesDir ) || bInplaceStorage )
-            {
-                xSourceLibrariesStor = mxStorage->openStorageElement( maLibrariesDir,
-                                                   bInplaceStorage ? embed::ElementModes::READWRITE : embed::ElementModes::READ );
-            }
-        }
-        catch( const uno::Exception& )
-        {
-            DBG_UNHANDLED_EXCEPTION();
-            return;
-        }
     }
 
     int iArray = 0;
@@ -1984,6 +1969,21 @@ void SfxLibraryContainer::storeLibraries_Impl( const uno::Reference< embed::XSto
     // then we need to clean up the temporary storage we used for this
     if ( bInplaceStorage && !sTempTargetStorName.isEmpty() )
     {
+        // open the source storage which might be used to copy yet-unmodified libraries
+        try
+        {
+            if ( mxStorage->hasByName( maLibrariesDir ) || bInplaceStorage )
+            {
+                xSourceLibrariesStor = mxStorage->openStorageElement( maLibrariesDir,
+                                                   bInplaceStorage ? embed::ElementModes::READWRITE : embed::ElementModes::READ );
+            }
+        }
+        catch( const uno::Exception& )
+        {
+            DBG_UNHANDLED_EXCEPTION();
+            return;
+        }
+
         SAL_WARN_IF(
             !xSourceLibrariesStor.is(), "basic",
             ("SfxLibrariesContainer::storeLibraries_impl: unexpected: we should"


More information about the Libreoffice-commits mailing list