< prev index next >

src/java.base/macosx/native/libjli/java_md_macosx.m

Print this page

        

*** 1,7 **** /* ! * Copyright (c) 2012, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this --- 1,7 ---- /* ! * Copyright (c) 2012, 2020, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this
*** 518,527 **** --- 518,543 ---- if (0 == strncmp(realPathToSelf + indexOfLastPathComponent, lastPathComponent, sizeOfLastPathComponent - 1)) { realPathToSelf[indexOfLastPathComponent + 1] = '\0'; return JNI_TRUE; } + // If libjli.dylib is loaded from a macos bundle MacOS dir, find the JRE dir + // in ../Home. + const char altLastPathComponent[] = "/MacOS/libjli.dylib"; + sizeOfLastPathComponent = sizeof(altLastPathComponent) - 1; + if (pathLen < sizeOfLastPathComponent) { + return JNI_FALSE; + } + + indexOfLastPathComponent = pathLen - sizeOfLastPathComponent; + if (0 == strncmp(realPathToSelf + indexOfLastPathComponent, altLastPathComponent, sizeOfLastPathComponent - 1)) { + JLI_Snprintf(realPathToSelf + indexOfLastPathComponent, sizeOfLastPathComponent, "%s", "/Home"); + if (access(realPathToSelf, F_OK) == 0) { + return JNI_TRUE; + } + } + if (!speculative) JLI_ReportErrorMessage(JRE_ERROR8 JAVA_DLL); return JNI_FALSE; }
< prev index next >