RFR: 8354464: Additional cleanup setting up native.encoding

Naoto Sato naoto at openjdk.org
Tue Apr 15 17:14:46 UTC 2025


On Tue, 15 Apr 2025 17:04:35 GMT, Naoto Sato <naoto at openjdk.org> wrote:

>> Remove the #ifdef MACOSX from platform-independent System.c, which (on Mac) sets native.encoding from sprops.encoding or (on non-Mac Unix and Windows) sets native.encoding from sprops.sun_jnu_encoding. After this removal, the native.encoding property will be set from sprops.encoding and the sun.jnu.encoding property will be set from sprops.sun_jnu_encoding.
>> 
>> Change the windows java_props_md.c so that it initializes sprops.sun_jnu_encoding and then copies that value to sprops.encoding. Previously, sprops.encoding was initialized with data from other Windows APIs, but this value was ignored by platform-independent code, which was kind of confusing.
>> 
>> There are no changes to the Unix (Mac & non-Mac) platform-specific code. It already has code to set sprops.encoding and sprops.sun_jnu_encoding properly, including macOS-specific code to set the latter to UTF-8 unconditionally.
>> 
>> There should be no behavior changes on any platform.
>> 
>> I changed variable names in windows/java_props_md.c to make it clear that the values stored into them are unused. Of course there are other possibilities here, such as changing the interface to SetupI18nProps(). I'm open to suggestions.
>
> src/java.base/share/native/libjava/System.c line 151:
> 
>> 149:     /* basic encoding properties, always non-NULL */
>> 150:     PUTPROP(propArray, _native_encoding_NDX, sprops->encoding);
>> 151:     PUTPROP(propArray, _sun_jnu_encoding_NDX, sprops->sun_jnu_encoding);
> 
> Since we now got rid of platform depenence here, would it make sense to perform non-null assertion in Java level here? I remember in the last PR we added `assert` in platform C code.

`Java level` -> `Platform independent C level`
Sorry

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

PR Review Comment: https://git.openjdk.org/jdk/pull/24607#discussion_r2045102627


More information about the core-libs-dev mailing list