On Wed, 28 Aug 2024 09:52:10 GMT, Maurizio Cimadamore <mcimadam...@openjdk.org> 
wrote:

>> This PR proposes to add a new overload to `MemorySegment::getString` whereby 
>> it is possible to pass in a known byte length of the content in a segment 
>> that should be converted to a String. This is useful in case one already 
>> knows the byte length and thereby does not need to scan for a null 
>> terminator.
>
> src/java.base/share/classes/java/lang/foreign/MemorySegment.java line 1316:
> 
>> 1314: 
>> 1315:     /**
>> 1316:      * Reads a string using the given byte length from this segment at 
>> the given offset,
> 
> What happens is there's a null terminator before `length` ? Seems like we're 
> just copying it? IMHO, this is the tension with this API.

Overall, I guess I'm not overly convinced that it's worth adding a method like 
this for:

byte[] bytes = new byte[len];
MemorySegment.copy(segment, JAVA_BYTE, offset, bytes, 0, len);
return new String(bytes, charset);

e.g. the API provides string shortcuts for the common case. The more convoluted 
case can still be achieve via `copy`. Is there anything I'm missing here?

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/20725#discussion_r1734367933

Reply via email to