summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cui/source/options/optjava.cxx21
-rw-r--r--jvmfwk/source/framework.cxx5
2 files changed, 23 insertions, 3 deletions
diff --git a/cui/source/options/optjava.cxx b/cui/source/options/optjava.cxx
index c1528138f326..631d085c3bfb 100644
--- a/cui/source/options/optjava.cxx
+++ b/cui/source/options/optjava.cxx
@@ -944,13 +944,30 @@ void SvxJavaClassPathDlg::SetClassPath( const OUString& _rPath )
sal_Int32 nIdx = 0;
do
{
- OUString sToken = _rPath.getToken( 0, CLASSPATH_DELIMITER, nIdx );
+ sal_Int32 nextColon = _rPath.indexOf(CLASSPATH_DELIMITER, nIdx);
+ OUString sToken(
+ _rPath.subView(nIdx, nextColon > 0 ? nextColon - nIdx : _rPath.getLength() - nIdx));
+
+ // Detect open bootstrap variables - they might contain colons - we need to skip those.
+ sal_Int32 nBootstrapVarStart = sToken.indexOf("${");
+ if (nBootstrapVarStart >= 0)
+ {
+ sal_Int32 nBootstrapVarEnd = sToken.indexOf("}");
+ if (nBootstrapVarEnd == -1)
+ {
+ // Current colon is part of bootstrap variable - skip it!
+ nextColon = _rPath.indexOf(CLASSPATH_DELIMITER, nextColon + 1);
+ sToken = _rPath.subView(nIdx, nextColon > 0 ? nextColon - nIdx
+ : _rPath.getLength() - nIdx);
+ }
+ }
OUString sURL;
osl::FileBase::getFileURLFromSystemPath(sToken, sURL); // best effort
INetURLObject aURL( sURL );
m_xPathList->append("", sToken, SvFileInformationManager::GetImageId(aURL));
+ nIdx = nextColon + 1;
}
- while (nIdx>=0);
+ while (nIdx > 0);
// select first entry
m_xPathList->select(0);
}
diff --git a/jvmfwk/source/framework.cxx b/jvmfwk/source/framework.cxx
index 5f83e7be739e..33b61f1622fd 100644
--- a/jvmfwk/source/framework.cxx
+++ b/jvmfwk/source/framework.cxx
@@ -185,7 +185,10 @@ javaFrameworkError jfw_startVM(
return JFW_E_NEED_RESTART;
vmParams = settings.getVmParametersUtf8();
- sUserClassPath = jfw::makeClassPathOption(settings.getUserClassPath());
+ // Expand user classpath (might contain bootstrap vars)
+ OUString sUserPath(settings.getUserClassPath());
+ rtl::Bootstrap::expandMacros(sUserPath);
+ sUserClassPath = jfw::makeClassPathOption(sUserPath);
} // end mode FWK_MODE_OFFICE
else if (mode == jfw::JFW_MODE_DIRECT)
{