On Sat, 12 Apr 2025 02:19:35 GMT, Stuart Marks <sma...@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.

Thanks for the clean-up, Stuart. Looks good to me.

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.

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

PR Review: https://git.openjdk.org/jdk/pull/24607#pullrequestreview-2769173653
PR Review Comment: https://git.openjdk.org/jdk/pull/24607#discussion_r2045089359

Reply via email to