RFR: 8338257: UTF8 lengths should be size_t not int [v5]
    Coleen Phillimore 
    coleenp at openjdk.org
       
    Mon Aug 26 23:44:06 UTC 2024
    
    
  
On Mon, 19 Aug 2024 23:08:35 GMT, David Holmes <dholmes at openjdk.org> wrote:
>> src/hotspot/share/classfile/javaClasses.cpp line 639:
>> 
>>> 637:   if (length == 0) {
>>> 638:     return 0;
>>> 639:   }
>> 
>> Maybe assert length > 0 here?
>
> Why "> 0" ?
Because length is an in which could be negative but you're passing it to size_t.  -Wsign-conversion might complain because you're changing signs.  I guess you know from context that it's a positive number, so ok.
>> src/hotspot/share/prims/jni.cpp line 2226:
>> 
>>> 2224:  HOTSPOT_JNI_GETSTRINGUTFLENGTH_ENTRY(env, string);
>>> 2225:   oop java_string = JNIHandles::resolve_non_null(string);
>>> 2226:   jsize ret = java_lang_String::utf8_length_as_int(java_string);
>> 
>> So the spec says that this should be jsize (signed int), which is why this is, right?
>
> Yes. Hence the other change to add a new JNI API.
Ok.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/20560#discussion_r1731939815
PR Review Comment: https://git.openjdk.org/jdk/pull/20560#discussion_r1731940575
    
    
More information about the hotspot-dev
mailing list