From 5e9a2e9b0f33ab50aa3a84728db75383aede19d9 Mon Sep 17 00:00:00 2001 From: Stephan Bergmann Date: Mon, 15 Dec 2014 16:42:03 +0100 Subject: Check each potential JRE location only once i.e., after recent "fdo#83753: consider JAVA_HOME and PATH when selecting JRE" fix, if jfw_findAndSelectJRE found no suitable JRE in jfw_plugin_getJavaInfoFromJavaHome or jfw_plugin_getJavaInfosFromPath, do not re-check those locations in jfw_plugin_getAllJavaInfos. Change-Id: If4e085b4fceff5b2494c7b7b84ac51691dbc78cc --- jvmfwk/source/framework.cxx | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'jvmfwk/source') diff --git a/jvmfwk/source/framework.cxx b/jvmfwk/source/framework.cxx index 75daa77b83eb..314e92fb26b1 100644 --- a/jvmfwk/source/framework.cxx +++ b/jvmfwk/source/framework.cxx @@ -86,14 +86,17 @@ javaFrameworkError SAL_CALL jfw_findAllJREs(JavaInfo ***pparInfo, sal_Int32 *pSi //maxVersion and excludeVersions sal_Int32 cInfos = 0; JavaInfo** arInfos = NULL; + std::vector> infos; javaPluginError plerr = jfw_plugin_getAllJavaInfos( + true, vendor, versionInfo.sMinVersion, versionInfo.sMaxVersion, versionInfo.getExcludeVersions(), versionInfo.getExcludeVersionSize(), & arInfos, - & cInfos); + & cInfos, + infos); if (plerr != JFW_PLUGIN_E_NONE) return JFW_E_ERROR; @@ -408,10 +411,12 @@ javaFrameworkError SAL_CALL jfw_findAndSelectJRE(JavaInfo **pInfo) std::pair(vendor, versionInfo)); } + std::vector> infos; + // first inspect Java installation that the JAVA_HOME // environment variable points to (if it is set) JavaInfo* pHomeInfo = NULL; - if (jfw_plugin_getJavaInfoFromJavaHome(versionInfos, &pHomeInfo) + if (jfw_plugin_getJavaInfoFromJavaHome(versionInfos, &pHomeInfo, infos) == JFW_PLUGIN_E_NONE) { aCurrentInfo = pHomeInfo; @@ -431,7 +436,8 @@ javaFrameworkError SAL_CALL jfw_findAndSelectJRE(JavaInfo **pInfo) if (!bInfoFound) { std::vector vecJavaInfosFromPath; - if (jfw_plugin_getJavaInfosFromPath(versionInfos, vecJavaInfosFromPath) + if (jfw_plugin_getJavaInfosFromPath( + versionInfos, vecJavaInfosFromPath, infos) == JFW_PLUGIN_E_NONE) { std::vector::const_iterator it = vecJavaInfosFromPath.begin(); @@ -482,13 +488,15 @@ javaFrameworkError SAL_CALL jfw_findAndSelectJRE(JavaInfo **pInfo) sal_Int32 cInfos = 0; JavaInfo** arInfos = NULL; javaPluginError plerr = jfw_plugin_getAllJavaInfos( + false, vendor, versionInfo.sMinVersion, versionInfo.sMaxVersion, versionInfo.getExcludeVersions(), versionInfo.getExcludeVersionSize(), & arInfos, - & cInfos); + & cInfos, + infos); if (plerr != JFW_PLUGIN_E_NONE) continue; -- cgit