RFR: 8285517: System.getenv() returns unexpected value if environment variable has non ASCII character [v4]

Naoto Sato naoto at openjdk.java.net
Thu May 5 01:42:27 UTC 2022


On Wed, 4 May 2022 17:09:32 GMT, Ichiroh Takiguchi <itakiguchi at openjdk.org> wrote:

>> On JDK19 with Linux ja_JP.eucjp locale,
>> System.getenv() returns unexpected value if environment variable has Japanese EUC characters.
>> It seems this issue happens because of JEP 400.
>> Arguments for ProcessBuilder have same kind of issue.
>
> Ichiroh Takiguchi has updated the pull request incrementally with one additional commit since the last revision:
> 
>   8285517: System.getenv() returns unexpected value if environment variable has non ASCII character

src/java.base/unix/classes/java/lang/ProcessEnvironment.java line 73:

> 71:         @SuppressWarnings("removal")
> 72:         String jnuEncoding = AccessController.doPrivileged((PrivilegedAction<String>) ()
> 73:             -> System.getProperty("sun.jnu.encoding"));

No need to issue `doPrivileged()`, which is deprecated

src/java.base/unix/classes/java/lang/ProcessImpl.java line 149:

> 147:         @SuppressWarnings("removal")
> 148:         String jnuEncoding = AccessController.doPrivileged((PrivilegedAction<String>) ()
> 149:             -> System.getProperty("sun.jnu.encoding"));

Same here.

test/jdk/java/lang/System/i18nEnvArg.java line 70:

> 68:             Map<String, String> environ = pb.environment();
> 69:             environ.clear();
> 70:             environ.put("LANG", "ja_JP.eucjp");

There are many duplicate pieces of code here and in the `else` block below. Can you simplify this `if` statement more?

test/jdk/java/lang/System/i18nEnvArg.java line 110:

> 108:             String s = System.getenv(EUC_JP_TEXT);
> 109:             ByteArrayOutputStream baos = new ByteArrayOutputStream();
> 110:             PrintStream ps = new PrintStream(baos);

Can utilize try-with-resources pattern.

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

PR: https://git.openjdk.java.net/jdk/pull/8378


More information about the core-libs-dev mailing list