From: Stephan Bergmann Date: Mon, 28 Aug 2017 13:35:43 +0000 (+0200) Subject: tdf#100501: Adapt to Java 9 (at least on Linux x86-64) X-Git-Tag: archive/raspbian/1%5.4.1-1+rpi1^2~1 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=bae0b7fd4362dcfb982e075d37c0f7e9d424dee0;p=libreoffice.git tdf#100501: Adapt to Java 9 (at least on Linux x86-64) Checking with both jdk-9+181_linux-x64_bin.tar.gz and jre-9+181_linux-x64_bin.tar.gz as currently available at "JDK 9 Early-Access Builds": For one, make SunVersion::init understand "JEP 223: New Version-String Scheme" at least insofar as to accept strings like "9" with less than three dot-separated segments (where the missing segments are treated like "0"). For another, at least for Linux x86-64, libjvm.so is now apparently located in a path without an "amd64" architecture segment, "lib/server/libjvm.so". (But could that also be "client"?) Other platforms may need further adjustments. Change-Id: Idcebc833472c81a1dc74dcdd481b0a37274a8713 Gbp-Pq: Name java9.diff --- diff --git a/jvmfwk/plugins/sunmajor/pluginlib/sunjre.cxx b/jvmfwk/plugins/sunmajor/pluginlib/sunjre.cxx index 7f7c4943c8b..7543f497eb8 100644 --- a/jvmfwk/plugins/sunmajor/pluginlib/sunjre.cxx +++ b/jvmfwk/plugins/sunmajor/pluginlib/sunjre.cxx @@ -68,7 +68,8 @@ char const* const* SunInfo::getRuntimePaths(int * size) "/lib/" JFW_PLUGIN_ARCH "/client/libjvm.so", "/lib/" JFW_PLUGIN_ARCH "/server/libjvm.so", "/lib/" JFW_PLUGIN_ARCH "/classic/libjvm.so", - "/lib/" JFW_PLUGIN_ARCH "/jrockit/libjvm.so" + "/lib/" JFW_PLUGIN_ARCH "/jrockit/libjvm.so", + "/lib/server/libjvm.so" #endif }; *size = SAL_N_ELEMENTS(ar); diff --git a/jvmfwk/plugins/sunmajor/pluginlib/sunversion.cxx b/jvmfwk/plugins/sunmajor/pluginlib/sunversion.cxx index 85f31a383fc..fb4227da196 100644 --- a/jvmfwk/plugins/sunmajor/pluginlib/sunversion.cxx +++ b/jvmfwk/plugins/sunmajor/pluginlib/sunversion.cxx @@ -88,7 +88,7 @@ bool SunVersion::init(const char *szVersion) ! (nPartPos == 0) // prevents: ".4.1", "..1", part must start with digit && ( //separators after maintenance (1.4.1_01, 1.4.1-beta, or 1.4.1) - ((pCur == pEnd || *pCur == '_' || *pCur == '-') && (nPart == 2 )) + (pCur == pEnd || *pCur == '_' || *pCur == '-') || //separators between major-minor and minor-maintenance (nPart < 2 && *pCur == '.') ) @@ -97,6 +97,8 @@ bool SunVersion::init(const char *szVersion) pCur + 1 != pEnd || rtl::isAsciiDigit(static_cast(*pCur))) ) { + bool afterMaint = pCur == pEnd || *pCur == '_' || *pCur == '-'; + int len = pCur - pLast; if (len >= 127) return false; @@ -107,6 +109,9 @@ bool SunVersion::init(const char *szVersion) pLast = pCur; m_arVersionParts[nPart] = atoi(buf); + + if (afterMaint) + nPart = 2; nPart ++; nPartPos = 0; if (nPart == 3)