Author: orw
Date: Fri Feb 15 13:28:08 2013
New Revision: 1446574

URL: http://svn.apache.org/r1446574
Log:
#121625# - method <ExtensionManager::getExtensionsWithSameId(..)> - catch 
certain exceptions to avoid crashes
         - method <ExtensionManager::getAllExtensions(..)> - do not add bundled 
extensions twice to the map; the map can not hold a fourth entry.

Modified:
    
openoffice/trunk/main/desktop/source/deployment/manager/dp_extensionmanager.cxx

Modified: 
openoffice/trunk/main/desktop/source/deployment/manager/dp_extensionmanager.cxx
URL: 
http://svn.apache.org/viewvc/openoffice/trunk/main/desktop/source/deployment/manager/dp_extensionmanager.cxx?rev=1446574&r1=1446573&r2=1446574&view=diff
==============================================================================
--- 
openoffice/trunk/main/desktop/source/deployment/manager/dp_extensionmanager.cxx 
(original)
+++ 
openoffice/trunk/main/desktop/source/deployment/manager/dp_extensionmanager.cxx 
Fri Feb 15 13:28:08 2013
@@ -313,26 +313,59 @@ void ExtensionManager::addExtensionsToMa
     {   //will throw an exception if the extension does not exist
         extensionList.push_back(getUserRepository()->getDeployedPackage(
             identifier, fileName, Reference<ucb::XCommandEnvironment>()));
-    } catch(lang::IllegalArgumentException &)
+    }
+    catch(lang::IllegalArgumentException &)
+    {
+        extensionList.push_back(Reference<deploy::XPackage>());
+    }
+    // catch deploy::DeploymentException and ucb::CommandFailedException to 
avoid unhandled exceptions causing crashes
+    catch( deploy::DeploymentException & )
+    {
+        extensionList.push_back(Reference<deploy::XPackage>());
+    }
+    catch( ucb::CommandFailedException & )
     {
         extensionList.push_back(Reference<deploy::XPackage>());
     }
+
     try
     {
         extensionList.push_back(getSharedRepository()->getDeployedPackage(
             identifier, fileName, Reference<ucb::XCommandEnvironment>()));
-    } catch (lang::IllegalArgumentException &)
+    }
+    catch (lang::IllegalArgumentException &)
+    {
+        extensionList.push_back(Reference<deploy::XPackage>());
+    }
+    // catch deploy::DeploymentException and ucb::CommandFailedException to 
avoid unhandled exceptions causing crashes
+    catch( deploy::DeploymentException & )
     {
         extensionList.push_back(Reference<deploy::XPackage>());
     }
+    catch( ucb::CommandFailedException & )
+    {
+        extensionList.push_back(Reference<deploy::XPackage>());
+    }
+
     try
     {
        extensionList.push_back(getBundledRepository()->getDeployedPackage(
            identifier, fileName, Reference<ucb::XCommandEnvironment>()));
-    } catch (lang::IllegalArgumentException &)
+    }
+    catch (lang::IllegalArgumentException &)
     {
         extensionList.push_back(Reference<deploy::XPackage>());
     }
+    // catch deploy::DeploymentException and ucb::CommandFailedException to 
avoid unhandled exceptions causing crashes
+    catch( deploy::DeploymentException & )
+    {
+        extensionList.push_back(Reference<deploy::XPackage>());
+    }
+    catch( ucb::CommandFailedException & )
+    {
+        extensionList.push_back(Reference<deploy::XPackage>());
+    }
+
     OSL_ASSERT(extensionList.size() == 3);
     return extensionList;
 }
@@ -1181,7 +1214,6 @@ uno::Sequence< uno::Sequence<Reference<d
         uno::Sequence<Reference<deploy::XPackage> > bundledExt =
             getBundledRepository()->getDeployedPackages(xAbort, xCmdEnv);
         addExtensionsToMap(mapExt, bundledExt, OUSTR("bundled"));
-        addExtensionsToMap(mapExt, bundledExt, OUSTR("bundled_prereg"));
 
         // Create the tmp repository to trigger its clean up (deletion
         // of old temporary data.)


Reply via email to