diff --git a/src/solaris/classes/sun/nio/fs/UnixPath.java b/src/solaris/classes/sun/nio/fs/UnixPath.java index 75a000b7058f001fdddae0ef3c0919b47db669c7..53a32c14a6493daba2c20292b2931a43e51abea3 100644 --- a/src/solaris/classes/sun/nio/fs/UnixPath.java +++ b/src/solaris/classes/sun/nio/fs/UnixPath.java @@ -1141,6 +1141,13 @@ class UnixPath } result = result.resolve(element); } + + // check file exists (without following links) + try { + UnixFileAttributes.get(result, false); + } catch (UnixException x) { + x.rethrowAsIOException(result); + } return result; } diff --git a/test/java/nio/file/Path/Misc.java b/test/java/nio/file/Path/Misc.java index 8b2223b23890b14e417300d0d86897c92b68cbb5..3b24c786261f094c93d1255e86098c514fa0bdd9 100644 --- a/test/java/nio/file/Path/Misc.java +++ b/test/java/nio/file/Path/Misc.java @@ -260,6 +260,21 @@ public class Misc { */ assertTrue(file.toRealPath(true).isSameFile(file.toRealPath(false))); + /** + * Test: toRealPath should fail if file does not exist + */ + Path doesNotExist = dir.resolve("DoesNotExist"); + try { + doesNotExist.toRealPath(true); + throw new RuntimeException("IOException expected"); + } catch (IOException expected) { + } + try { + doesNotExist.toRealPath(false); + throw new RuntimeException("IOException expected"); + } catch (IOException expected) { + } + /** * Test: toRealPath(true) should resolve links */