< prev index next >

src/hotspot/share/classfile/classLoader.cpp

Print this page




 189     *bad_class_name = false;
 190   }
 191 
 192   const char* const last_slash = strrchr(class_name, '/');
 193   if (last_slash == NULL) {
 194     // No package name
 195     return NULL;
 196   }
 197 
 198   char* class_name_ptr = (char*) class_name;
 199   // Skip over '['s
 200   if (*class_name_ptr == '[') {
 201     do {
 202       class_name_ptr++;
 203     } while (*class_name_ptr == '[');
 204 
 205     // Fully qualified class names should not contain a 'L'.
 206     // Set bad_class_name to true to indicate that the package name
 207     // could not be obtained due to an error condition.
 208     // In this situation, is_same_class_package returns false.
 209     if (*class_name_ptr == 'L') {
 210       if (bad_class_name != NULL) {
 211         *bad_class_name = true;
 212       }
 213       return NULL;
 214     }
 215   }
 216 
 217   int length = last_slash - class_name_ptr;
 218 
 219   // A class name could have just the slash character in the name.
 220   if (length <= 0) {
 221     // No package name
 222     if (bad_class_name != NULL) {
 223       *bad_class_name = true;
 224     }
 225     return NULL;
 226   }
 227 
 228   // drop name after last slash (including slash)
 229   // Ex., "java/lang/String.class" => "java/lang"




 189     *bad_class_name = false;
 190   }
 191 
 192   const char* const last_slash = strrchr(class_name, '/');
 193   if (last_slash == NULL) {
 194     // No package name
 195     return NULL;
 196   }
 197 
 198   char* class_name_ptr = (char*) class_name;
 199   // Skip over '['s
 200   if (*class_name_ptr == '[') {
 201     do {
 202       class_name_ptr++;
 203     } while (*class_name_ptr == '[');
 204 
 205     // Fully qualified class names should not contain a 'L'.
 206     // Set bad_class_name to true to indicate that the package name
 207     // could not be obtained due to an error condition.
 208     // In this situation, is_same_class_package returns false.
 209     if (*class_name_ptr == 'L' || *class_name_ptr == 'Q') {
 210       if (bad_class_name != NULL) {
 211         *bad_class_name = true;
 212       }
 213       return NULL;
 214     }
 215   }
 216 
 217   int length = last_slash - class_name_ptr;
 218 
 219   // A class name could have just the slash character in the name.
 220   if (length <= 0) {
 221     // No package name
 222     if (bad_class_name != NULL) {
 223       *bad_class_name = true;
 224     }
 225     return NULL;
 226   }
 227 
 228   // drop name after last slash (including slash)
 229   // Ex., "java/lang/String.class" => "java/lang"


< prev index next >