summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Lib/posixpath.py22
-rw-r--r--Misc/NEWS3
2 files changed, 17 insertions, 8 deletions
diff --git a/Lib/posixpath.py b/Lib/posixpath.py
index e1d59b6e9f..7362483502 100644
--- a/Lib/posixpath.py
+++ b/Lib/posixpath.py
@@ -182,18 +182,24 @@ def lexists(path):
def ismount(path):
"""Test whether a path is a mount point"""
- if islink(path):
- # A symlink can never be a mount point
- return False
try:
s1 = os.lstat(path)
- if isinstance(path, bytes):
- parent = join(path, b'..')
- else:
- parent = join(path, '..')
+ except OSError:
+ # It doesn't exist -- so not a mount point. :-)
+ return False
+ else:
+ if stat.S_ISLNK(s1.st_mode):
+ return False
+
+ if isinstance(path, bytes):
+ parent = join(path, b'..')
+ else:
+ parent = join(path, '..')
+ try:
s2 = os.lstat(parent)
except OSError:
- return False # It doesn't exist -- so not a mount point :-)
+ return False
+
dev1 = s1.st_dev
dev2 = s2.st_dev
if dev1 != dev2:
diff --git a/Misc/NEWS b/Misc/NEWS
index 26c629552f..3391d2c054 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -162,6 +162,9 @@ Core and Builtins
Library
-------
+- Issue #18530: Remove additional stat call from posixpath.ismount.
+ Patch by Alex Gaynor.
+
- Issue #18514: Fix unreachable Py_DECREF() call in PyCData_FromBaseObj()
- Issue #9177: Calling read() or write() now raises ValueError, not