On Wed, 28 Aug 2024 09:56:43 GMT, Maurizio Cimadamore <mcimadam...@openjdk.org> wrote:
>> 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? Ok, I suppose what you do get is the auto-detection of charset length, which adjusts the size of the copy... ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/20725#discussion_r1734369629