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