RFR 8207016 : [win] Avoid redundant native memory allocation in getFinalPath()

Ivan Gerasimov ivan.gerasimov at oracle.com
Wed Jul 11 02:33:50 UTC 2018


File src/java.base/windows/native/libjava/WinNTFileSystem_md.c
The function getFinalPath() is wrapper for GetFinalPathNameByHandleW(), 
which is used to resolve the symlinks on Windows.

If the resulting string begins with a prefix "\\?\" or "\\?\UNC", a copy 
without the prefix is created and returned.

Instead of creating the copy, we can override the result with memmove() 
to avoid allocating extra native memory.
The result of getFinalPath() is short living anyway, so a few unused 
bytes at the end of the buffer should not be a problem.

The advantage is a shorter code and minus one point of possible failure.

Would you please help review it?

BUG: https://bugs.openjdk.java.net/browse/JDK-8207016
Webrev: http://cr.openjdk.java.net/~igerasim/8207016/00/webrev/

Thanks in advance!

With kind regards,
Ivan Gerasimov

More information about the core-libs-dev mailing list