228e4d
From b1fcdc417f14fc561358203d67a4e90e5d7f7b54 Mon Sep 17 00:00:00 2001
228e4d
From: Stephan Bergmann <sbergman@redhat.com>
228e4d
Date: Mon, 21 Feb 2022 11:55:21 +0100
228e4d
Subject: [PATCH] Avoid unnecessary empty -Djava.class.path=
228e4d
228e4d
Change-Id: Idcfe7321077b60381c0273910b1faeb444ef1fd8
228e4d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/130242
228e4d
Tested-by: Jenkins
228e4d
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
228e4d
228e4d
erAck: backported to 6.0.6.1
228e4d
erAck: backported to 5.3.6.1
228e4d
---
228e4d
 .../plugins/sunmajor/pluginlib/sunjavaplugin.cxx | 16 +++++++++++++---
228e4d
 jvmfwk/source/framework.cxx                      |  8 ++++++--
228e4d
 jvmfwk/source/fwkbase.cxx                        |  3 +++
228e4d
 3 files changed, 22 insertions(+), 5 deletions(-)
228e4d
228e4d
diff --git a/jvmfwk/plugins/sunmajor/pluginlib/sunjavaplugin.cxx b/jvmfwk/plugins/sunmajor/pluginlib/sunjavaplugin.cxx
228e4d
index d69b439..dd859cb 100644
228e4d
--- a/jvmfwk/plugins/sunmajor/pluginlib/sunjavaplugin.cxx
228e4d
+++ b/jvmfwk/plugins/sunmajor/pluginlib/sunjavaplugin.cxx
228e4d
@@ -749,17 +749,22 @@ javaPluginError jfw_plugin_startJavaVirtualMachine(
228e4d
     // all versions below 1.5.1
228e4d
     options.push_back(Option("abort", reinterpret_cast<void*>(abort_handler)));
228e4d
     bool hasStackSize = false;
228e4d
+#ifdef UNX
228e4d
+    // Until java 1.5 we need to put a plugin.jar or javaplugin.jar (<1.4.2)
228e4d
+    // in the class path in order to have applet support:
228e4d
+    OString sAddPath = getPluginJarPath(pInfo->sVendor, pInfo->sLocation,pInfo->sVersion);
228e4d
+#endif
228e4d
     for (int i = 0; i < cOptions; i++)
228e4d
     {
228e4d
         OString opt(arOptions[i].optionString);
228e4d
 #ifdef UNX
228e4d
-        // Until java 1.5 we need to put a plugin.jar or javaplugin.jar (<1.4.2)
228e4d
-        // in the class path in order to have applet support:
228e4d
         if (opt.startsWith("-Djava.class.path="))
228e4d
         {
228e4d
-            OString sAddPath = getPluginJarPath(pInfo->sVendor, pInfo->sLocation,pInfo->sVersion);
228e4d
             if (!sAddPath.isEmpty())
228e4d
+            {
228e4d
                 opt += OString(SAL_PATHSEPARATOR) + sAddPath;
228e4d
+                sAddPath.clear();
228e4d
+            }
228e4d
         }
228e4d
 #endif
228e4d
         if (opt == "-Xint") {
228e4d
@@ -805,6 +810,11 @@ javaPluginError jfw_plugin_startJavaVirtualMachine(
228e4d
         }
228e4d
 #endif
228e4d
     }
228e4d
+#ifdef UNX
228e4d
+    if (!sAddPath.isEmpty()) {
228e4d
+        options.emplace_back("-Djava.class.path=" + sAddPath, nullptr);
228e4d
+    }
228e4d
+#endif
228e4d
 
228e4d
     std::unique_ptr<JavaVMOption[]> sarOptions(new JavaVMOption[options.size()]);
228e4d
     for (std::vector<Option>::size_type i = 0; i != options.size(); ++i) {
228e4d
diff --git a/jvmfwk/source/framework.cxx b/jvmfwk/source/framework.cxx
228e4d
index 94f7c2c..9780e42 100644
228e4d
--- a/jvmfwk/source/framework.cxx
228e4d
+++ b/jvmfwk/source/framework.cxx
228e4d
@@ -287,8 +287,12 @@ javaFrameworkError jfw_startVM(
228e4d
                 //In direct mode the options are specified by bootstrap variables
228e4d
                 //of the form UNO_JAVA_JFW_PARAMETER_1 .. UNO_JAVA_JFW_PARAMETER_n
228e4d
                 vmParams = jfw::BootParams::getVMParameters();
228e4d
-                sUserClassPath =
228e4d
-                    "-Djava.class.path=" + jfw::BootParams::getClasspath();
228e4d
+                auto const cp = jfw::BootParams::getClasspath();
228e4d
+                if (!cp.isEmpty())
228e4d
+                {
228e4d
+                    sUserClassPath =
228e4d
+                        "-Djava.class.path=" + cp;
228e4d
+                }
228e4d
             }
228e4d
             else
228e4d
                 OSL_ASSERT(false);
228e4d
diff --git a/jvmfwk/source/fwkbase.cxx b/jvmfwk/source/fwkbase.cxx
228e4d
index b7d1d91..d8a0740 100644
228e4d
--- a/jvmfwk/source/fwkbase.cxx
228e4d
+++ b/jvmfwk/source/fwkbase.cxx
228e4d
@@ -490,6 +490,9 @@ OString makeClassPathOption(OUString const & sUserClassPath)
228e4d
 
228e4d
     sPaths = OUStringToOString(
228e4d
         sBufCP.makeStringAndClear(), osl_getThreadTextEncoding());
228e4d
+    if (sPaths.isEmpty()) {
228e4d
+        return "";
228e4d
+    }
228e4d
 
228e4d
     OString sOptionClassPath("-Djava.class.path=");
228e4d
     sOptionClassPath += sPaths;
228e4d
-- 
228e4d
2.44.0
228e4d