RFR (M) 8191521: handle long relative path specified in -Xbootclasspath/a on windows

Schmelter, Ralf ralf.schmelter at sap.com
Thu Jul 25 15:08:38 UTC 2019


Hi Calvin,

thanks for reviewing this change. 

> 4315       } else {
> 4316         prefix = L"\\\\?\\UNC";
> 4317         prefix_off = 1; // Overwrite the first char with the prefix.
> 4318       }

> Do you mean if the original path is something like "\\\\x\\y", it would 
> become the following?
>
>     ""\\\\?\\UNC\\x\\y"

Exactly. Usually you can just add a prefix, but in case of the an UNC path,
the double backslash must be changed to a single one. 

> Maybe add an example in the comment?

Good idea.

> 4368   if (err != ERROR_SUCCESS) {
> 4369     os::free(result);

> I think you need a NULL check on result before calling os::free() 
> because result could be NULL if the os::malloc() call at line 4328 has 
> failed.

os::free() is like ::free() and delete. You can call them with NULL,
which is just treated as a no-op.

> line 4282 please add a blank space before "The"
> line 4283 "er" should be "err"

Good catch.

> Could you also mention that the function is based on pathToNTPath() in 
> io_util_md.cpp?

OK.

> I haven't reviewed this file in details but I have tried your patch and 
> saw failures in tier1 testing.

That's interesting. Do you only see the errors with UNC paths? If yes,
could you open the 'Computer Management' application and look at
'System Tools' -> 'Shared Folders' -> 'Shares'. Usually if you have
a harddrive at let's say D:, windows will create a share called D$.
I've used this to check UNC paths, but the share might be missing.
Especially if T: is not a harddrive but a mapped drive. 

I should probably first test, if a can access the \\localhost\<DRIVELETTER>$
share at all and only then run the UNC path tests. 

Best regards,
Ralf


More information about the hotspot-runtime-dev mailing list