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