On Fri, 21 Nov 2025 14:30:53 GMT, Maurizio Cimadamore <[email protected]> 
wrote:

>> Liam Miller-Cushon has updated the pull request incrementally with one 
>> additional commit since the last revision:
>> 
>>   Use Utils.checkNonNegativeArgument
>
> src/java.base/share/classes/java/lang/foreign/MemorySegment.java line 1333:
> 
>> 1331:      * sequences with this charset's default replacement string. The 
>> {@link
>> 1332:      * java.nio.charset.CharsetDecoder} class should be used when more 
>> control
>> 1333:      * over the decoding process is required.
> 
> Should we say here, as you did for `copy` that this method ignores `\0` ?

I added:

> If the string contains any {@code '\0'} characters, they will be read as well.

I suppose it might also make sense to update those warnings in `setString` and 
`allocateFrom` to mention that if you want to avoid truncating null-terminated 
strings, `getString(long, Charset, long)` could be used instead of 
`getString(long)`. What do you think?

> src/java.base/share/classes/java/lang/foreign/MemorySegment.java line 1341:
> 
>> 1339:      * @param length  length in bytes of the string to read
>> 1340:      * @return a Java string constructed from the bytes read from the 
>> given starting
>> 1341:      *         address reading the given length of bytes
> 
> Maybe:
> 
> 
> a Java string constructed from the bytes read from the given starting address 
> up to the given length
> 
> 
> (that seems to match the existing `getString` a bit more, and avoids the 
> reading/read repetition)

Done

> src/java.base/share/classes/java/lang/foreign/MemorySegment.java line 2646:
> 
>> 2644:      * will appear truncated when read again.
>> 2645:      *
>> 2646:      * @param src      the Java string to be written into this segment
> 
> Suggestion:
> 
>      * @param src      the Java string to be written into the destination 
> segment

Done

> src/java.base/share/classes/java/lang/foreign/MemorySegment.java line 2649:
> 
>> 2647:      * @param dstEncoding the charset used to {@linkplain 
>> Charset#newEncoder() encode}
>> 2648:      *                 the string bytes.
>> 2649:      * @param srcIndex the starting index of the source string
> 
> Do we feel like saying words like "index" is good enough to say what we mean? 
> E.g. by index we mean something that is compatible with `length` and 
> `charAt`. I wonder if using a qualifier e.g. `character index` might help? 
> (open to suggestions here, I'm not 100% sure)

Thanks, I think 'character index' is probably better than just index, since 
there are both character and byte positions in this API. The docs for numChars 
also mentions characters. I don't have a better idea for avoiding confusion 
here.

> src/java.base/share/classes/java/lang/foreign/SegmentAllocator.java line 157:
> 
>> 155: 
>> 156:     /**
>> 157:      * Converts a Java string into a C string using the provided 
>> charset,
> 
> I think using the term `C string` here is misleading. 
> 
> I suggest:
> 
> 
> Encodes a Java string using the provided charset and stores the resulting 
> byte array into a memory segment.

Thanks, done

> src/java.base/share/classes/java/lang/foreign/SegmentAllocator.java line 170:
> 
>> 168:      * will appear truncated when read again.
>> 169:      *
>> 170:      * @param str      the Java string to be converted into a C string
> 
> Suggestion:
> 
>      * @param str      the Java string to be encoded

Done

> src/java.base/share/classes/java/lang/foreign/SegmentAllocator.java line 175:
> 
>> 173:      * @param srcIndex the starting index of the source string
>> 174:      * @param numChars the number of characters to be copied
>> 175:      * @return a new native segment containing the converted C string
> 
> Watch out for C string again

Done

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

PR Review Comment: https://git.openjdk.org/jdk/pull/28043#discussion_r2549972828
PR Review Comment: https://git.openjdk.org/jdk/pull/28043#discussion_r2549994262
PR Review Comment: https://git.openjdk.org/jdk/pull/28043#discussion_r2549973821
PR Review Comment: https://git.openjdk.org/jdk/pull/28043#discussion_r2549982045
PR Review Comment: https://git.openjdk.org/jdk/pull/28043#discussion_r2549987338
PR Review Comment: https://git.openjdk.org/jdk/pull/28043#discussion_r2550014277
PR Review Comment: https://git.openjdk.org/jdk/pull/28043#discussion_r2550015835

Reply via email to