src/share/vm/classfile/javaClasses.cpp

changeset 4987
f258c5828eb8
parent 4965
6337ca4dcad8
child 5176
6bd680e9ea35
child 5247
7ee0d5c53c78
     1.1 --- a/src/share/vm/classfile/javaClasses.cpp	Fri Apr 26 08:40:24 2013 -0700
     1.2 +++ b/src/share/vm/classfile/javaClasses.cpp	Mon Apr 29 16:13:57 2013 -0400
     1.3 @@ -315,14 +315,18 @@
     1.4    return string;
     1.5  }
     1.6  
     1.7 -jchar* java_lang_String::as_unicode_string(oop java_string, int& length) {
     1.8 +jchar* java_lang_String::as_unicode_string(oop java_string, int& length, TRAPS) {
     1.9    typeArrayOop value  = java_lang_String::value(java_string);
    1.10    int          offset = java_lang_String::offset(java_string);
    1.11                 length = java_lang_String::length(java_string);
    1.12  
    1.13 -  jchar* result = NEW_RESOURCE_ARRAY(jchar, length);
    1.14 -  for (int index = 0; index < length; index++) {
    1.15 -    result[index] = value->char_at(index + offset);
    1.16 +  jchar* result = NEW_RESOURCE_ARRAY_RETURN_NULL(jchar, length);
    1.17 +  if (result != NULL) {
    1.18 +    for (int index = 0; index < length; index++) {
    1.19 +      result[index] = value->char_at(index + offset);
    1.20 +    }
    1.21 +  } else {
    1.22 +    THROW_MSG_0(vmSymbols::java_lang_OutOfMemoryError(), "could not allocate Unicode string");
    1.23    }
    1.24    return result;
    1.25  }

mercurial