RFR: 8354464: Additional cleanup setting up native.encoding
Naoto Sato
naoto at openjdk.org
Tue Apr 15 17:08:56 UTC 2025
On Sat, 12 Apr 2025 02:19:35 GMT, Stuart Marks <smarks 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.
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
More information about the core-libs-dev
mailing list