[Libreoffice-commits] core.git: Branch 'aoo/trunk' - ucbhelper/source

Damjan Jovanovic damjan at apache.org
Tue Oct 18 20:08:34 UTC 2016


 ucbhelper/source/provider/resultsethelper.cxx |   45 ++++++++++++++++----------
 1 file changed, 28 insertions(+), 17 deletions(-)

New commits:
commit cea03b42ca0e2cd4d93c01879dec388295b8f771
Author: Damjan Jovanovic <damjan at apache.org>
Date:   Tue Oct 18 17:52:44 2016 +0000

    #i125868# AOO crashes if JRE (Java) is not installed (using help search or picture/makros)
    
    ucbhelper::ResultSetHelper methods calling init() can only throw
    RuntimeException, yet Exception or its other subclasses are
    thrown in some cases (eg. with Java disabled, try searching
    the Help index), resulting in unexpected() on at least FreeBSD
    and MacOS that crashes AOO.
    
    Fix this by catching Exception and instead throwing a
    RuntimeException with its message.
    
    Patch by: me

diff --git a/ucbhelper/source/provider/resultsethelper.cxx b/ucbhelper/source/provider/resultsethelper.cxx
index 4cde2c4..08cc0b3 100644
--- a/ucbhelper/source/provider/resultsethelper.cxx
+++ b/ucbhelper/source/provider/resultsethelper.cxx
@@ -298,27 +298,38 @@ void ResultSetImplHelper::init( sal_Bool bStatic )
 
     if ( !m_bInitDone )
     {
-        if ( bStatic )
+        try
         {
-            // virtual... derived class fills m_xResultSet1
-            initStatic();
-
-            OSL_ENSURE( m_xResultSet1.is(),
-                        "ResultSetImplHelper::init - No 1st result set!" );
-            m_bStatic = sal_True;
+            if ( bStatic )
+            {
+                // virtual... derived class fills m_xResultSet1
+                initStatic();
+
+                OSL_ENSURE( m_xResultSet1.is(),
+                            "ResultSetImplHelper::init - No 1st result set!" );
+                m_bStatic = sal_True;
+            }
+            else
+            {
+                // virtual... derived class fills m_xResultSet1 and m_xResultSet2
+                initDynamic();
+
+                OSL_ENSURE( m_xResultSet1.is(),
+                            "ResultSetImplHelper::init - No 1st result set!" );
+                OSL_ENSURE( m_xResultSet2.is(),
+                            "ResultSetImplHelper::init - No 2nd result set!" );
+                m_bStatic = sal_False;
+            }
+            m_bInitDone = sal_True;
+        }
+        catch ( uno::RuntimeException const &runtimeException )
+        {
+            throw runtimeException;
         }
-        else
+        catch ( uno::Exception const &exception )
         {
-            // virtual... derived class fills m_xResultSet1 and m_xResultSet2
-            initDynamic();
-
-            OSL_ENSURE( m_xResultSet1.is(),
-                        "ResultSetImplHelper::init - No 1st result set!" );
-            OSL_ENSURE( m_xResultSet2.is(),
-                        "ResultSetImplHelper::init - No 2nd result set!" );
-            m_bStatic = sal_False;
+            throw uno::RuntimeException( exception.Message, uno::Reference< XInterface >() );
         }
-        m_bInitDone = sal_True;
     }
 }
 


More information about the Libreoffice-commits mailing list