Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commita33ce66

Browse files
authored
GH-87695: Fix OSError frompathlib.Path.glob() (GH-104292)
Fix issue where `pathlib.Path.glob()` raised `OSError` when it encountereda symlink to an overly long path.
1 parent7a3b035 commita33ce66

File tree

3 files changed

+13
-2
lines changed

3 files changed

+13
-2
lines changed

‎Lib/pathlib.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -178,11 +178,11 @@ def _iterate_directories(self, parent_path, scandir):
178178
forentryinentries:
179179
entry_is_dir=False
180180
try:
181-
entry_is_dir=entry.is_dir()
181+
entry_is_dir=entry.is_dir(follow_symlinks=False)
182182
exceptOSErrorase:
183183
ifnot_ignore_error(e):
184184
raise
185-
ifentry_is_dirandnotentry.is_symlink():
185+
ifentry_is_dir:
186186
path=parent_path._make_child_relpath(entry.name)
187187
forpinself._iterate_directories(path,scandir):
188188
yieldp

‎Lib/test/test_pathlib.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1977,6 +1977,15 @@ def my_scandir(path):
19771977
subdir.chmod(000)
19781978
self.assertEqual(len(set(base.glob("*"))),4)
19791979

1980+
@os_helper.skip_unless_symlink
1981+
deftest_glob_long_symlink(self):
1982+
# See gh-87695
1983+
base=self.cls(BASE)/'long_symlink'
1984+
base.mkdir()
1985+
bad_link=base/'bad_link'
1986+
bad_link.symlink_to("bad"*200)
1987+
self.assertEqual(sorted(base.glob('**/*')), [bad_link])
1988+
19801989
def_check_resolve(self,p,expected,strict=True):
19811990
q=p.resolve(strict)
19821991
self.assertEqual(q,expected)
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
Fix issue where:meth:`pathlib.Path.glob` raised:exc:`OSError` when it
2+
encountered a symlink to an overly long path.

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp