src/hotspot/share/classfile/classLoader.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File
*** old/src/hotspot/share/classfile/classLoader.cpp Mon May 7 11:06:20 2018
--- new/src/hotspot/share/classfile/classLoader.cpp Mon May 7 11:06:20 2018
*** 1555,1575 ****
--- 1555,1577 ----
ResourceMark rm(THREAD);
int classpath_index = -1;
PackageEntry* pkg_entry = ik->package();
if (FileMapInfo::get_number_of_shared_paths() > 0) {
! char* canonical_path = NEW_RESOURCE_ARRAY(char, JVM_MAXPATHLEN);
! char* canonical_path_table_entry = NEW_RESOURCE_ARRAY_IN_THREAD(THREAD, char, JVM_MAXPATHLEN);
// save the path from the file: protocol or the module name from the jrt: protocol
// if no protocol prefix is found, path is the same as stream->source()
char* path = skip_uri_protocol(src);
+ char* canonical_class_src_path = NEW_RESOURCE_ARRAY_IN_THREAD(THREAD, char, JVM_MAXPATHLEN);
+ bool res = get_canonical_path(path, canonical_class_src_path, JVM_MAXPATHLEN);
for (int i = 0; i < FileMapInfo::get_number_of_shared_paths(); i++) {
SharedClassPathEntry* ent = FileMapInfo::shared_path(i);
! if (get_canonical_path(ent->name(), canonical_path_table_entry, JVM_MAXPATHLEN) && res) {
// If the path (from the class stream source) is the same as the shared
// class or module path, then we have a match.
! if (strcmp(canonical_path, os::native_path((char*)path)) == 0) {
! if (strcmp(canonical_path_table_entry, canonical_class_src_path) == 0) {
// NULL pkg_entry and pkg_entry in an unnamed module implies the class
// is from the -cp or boot loader append path which consists of -Xbootclasspath/a
// and jvmti appended entries.
if ((pkg_entry == NULL) || (pkg_entry->in_unnamed_module())) {
// Ensure the index is within the -cp range before assigning
src/hotspot/share/classfile/classLoader.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File