src/java.base/share/classes/java/lang/ClassLoader.java

Print this page
rev 11200 : [mq]: 8067951-System.loadLibrary.cannot.find.library.when.path.contains.quoted.entry

*** 1,7 **** /* ! * Copyright (c) 2013, 2014 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) 2013, 2015 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
*** 1745,1783 **** // The paths searched for libraries private static String usr_paths[]; private static String sys_paths[]; ! private static String[] initializePath(String propname) { ! String ldpath = System.getProperty(propname, ""); ! String ps = File.pathSeparator; ! int ldlen = ldpath.length(); ! int i, j, n; ! // Count the separators in the path ! i = ldpath.indexOf(ps); ! n = 0; ! while (i >= 0) { ! n++; ! i = ldpath.indexOf(ps, i + 1); ! } ! ! // allocate the array of paths - n :'s = n + 1 path elements ! String[] paths = new String[n + 1]; ! ! // Fill the array with paths from the ldpath ! n = i = 0; ! j = ldpath.indexOf(ps); ! while (j >= 0) { ! if (j - i > 0) { ! paths[n++] = ldpath.substring(i, j); ! } else if (j - i == 0) { ! paths[n++] = "."; } ! i = j + 1; ! j = ldpath.indexOf(ps, i); } ! paths[n] = ldpath.substring(i, ldlen); return paths; } // Invoked in the java.lang.Runtime class to implement load and loadLibrary. static void loadLibrary(Class<?> fromClass, String name, --- 1745,1795 ---- // The paths searched for libraries private static String usr_paths[]; private static String sys_paths[]; ! private static String[] initializePath(String propName) { ! String ldPath = System.getProperty(propName, ""); ! int ldLen = ldPath.length(); ! char ps = File.pathSeparatorChar; ! ! if (ClassLoaderHelper.allowsQuotedPathElements && ! ldPath.indexOf('\"') >= 0) { ! char[] buf = new char[ldLen]; ! int bufLen = 0; ! for (int i = 0; i < ldLen; ++i) { ! char ch = ldPath.charAt(i); ! if (ch == '\"') { ! while (++i < ldLen && ! (ch = ldPath.charAt(i)) != '\"') { ! buf[bufLen++] = ch; } ! } else { ! buf[bufLen++] = (ch == ps) ? '\0' : ch; ! } ! } ! ldPath = new String(buf, 0, bufLen); ! ldLen = bufLen; ! ps = '\0'; ! } ! ! int psCount = 0; ! for (int i = ldPath.indexOf(ps); i >= 0; ! i = ldPath.indexOf(ps, i + 1)) { ! psCount++; ! } ! ! String[] paths = new String[psCount + 1]; ! int pathStart = 0; ! for (int j = 0; j < psCount; ++j) { ! int pathEnd = ldPath.indexOf(ps, pathStart); ! paths[j] = (pathStart < pathEnd) ? ! ldPath.substring(pathStart, pathEnd) : "."; ! pathStart = pathEnd + 1; } ! paths[psCount] = (pathStart < ldLen) ? ! ldPath.substring(pathStart, ldLen) : "."; return paths; } // Invoked in the java.lang.Runtime class to implement load and loadLibrary. static void loadLibrary(Class<?> fromClass, String name,