comparison src/share/vm/prims/jvmtiTagMap.cpp @ 22828:9686a796c829

6584008: jvmtiStringPrimitiveCallback should not be invoked when string value is null Reviewed-by: sla, sspitsyn
author aph
date Fri, 16 Jan 2015 09:15:22 +0100
parents 2c6ef90f030a
children dd9cc155639c
comparison
equal deleted inserted replaced
22827:1830156c6b7e 22828:9686a796c829
1043 oop str, 1043 oop str,
1044 void* user_data) 1044 void* user_data)
1045 { 1045 {
1046 assert(str->klass() == SystemDictionary::String_klass(), "not a string"); 1046 assert(str->klass() == SystemDictionary::String_klass(), "not a string");
1047 1047
1048 typeArrayOop s_value = java_lang_String::value(str);
1049
1050 // JDK-6584008: the value field may be null if a String instance is
1051 // partially constructed.
1052 if (s_value == NULL) {
1053 return 0;
1054 }
1048 // get the string value and length 1055 // get the string value and length
1049 // (string value may be offset from the base) 1056 // (string value may be offset from the base)
1050 int s_len = java_lang_String::length(str); 1057 int s_len = java_lang_String::length(str);
1051 typeArrayOop s_value = java_lang_String::value(str);
1052 int s_offset = java_lang_String::offset(str); 1058 int s_offset = java_lang_String::offset(str);
1053 jchar* value; 1059 jchar* value;
1054 if (s_len > 0) { 1060 if (s_len > 0) {
1055 value = s_value->char_at_addr(s_offset); 1061 value = s_value->char_at_addr(s_offset);
1056 } else { 1062 } else {