RFR: 8349254: Disable "best-fit" mapping on Windows environment variables [v2]
Justin Lu
jlu at openjdk.org
Fri Feb 7 22:49:12 UTC 2025
On Fri, 7 Feb 2025 20:11:06 GMT, Naoto Sato <naoto at openjdk.org> wrote:
>> src/java.base/share/native/libjli/args.c line 611:
>>
>>> 609: LPWSTR wcVarName = JLI_MemAlloc(wcCount * sizeof(wchar_t));
>>> 610: if (MultiByteToWideChar(CP_ACP, 0, var_name, -1, wcVarName, wcCount) != 0) {
>>> 611: LPWSTR wcEnvVar = _wgetenv(wcVarName);
>>
>> Since we are in Windows specific code, would it make sense to call `GetEnvironmentVariableW` over `_wgetenv`? It won't be as concise since we will have to follow the 2-call style of determining the size, then filling the buffer; but I presume it avoids some overhead, since it's directly apart of the Win32 API?
>
> I think the overhead is negligible. If we use the Get... function, we will need to allocate/deallocate the intermediate buffer, which will make the code complex.
OK, seems good to use `_wgetenv` then.
>> test/jdk/tools/launcher/DisableBestFitMappingTest.java line 32:
>>
>>> 30: * @requires (os.family == "windows")
>>> 31: * @library /test/lib
>>> 32: * @run junit DisableBestFitMappingTest
>>
>> I think it might be best to re-write this test as a non Junit test. Through IntelliJ it's hard to run this test, I presume because of the combination of it being a Junit test and having a `main` method? If I run the 'launcher' suite of tests, this test does not seem to be included.
>
> I am not sure of this. Isn't it the issue in jtreg plugin? At least `make test TEST=...` will succeed.
Oops, I thought the test would mark as "skipped" or something like that, but yes its a Windows only test, hence why it does not show up, duh.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/23498#discussion_r1947288085
PR Review Comment: https://git.openjdk.org/jdk/pull/23498#discussion_r1947288095
More information about the core-libs-dev
mailing list