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

Commit846a23d

Browse files
[3.11]GH-87695: Fix OSError frompathlib.Path.glob() (GH-104292) (GH-104362)
Fix issue where `pathlib.Path.glob()` raised `OSError` when it encountereda symlink to an overly long path.(cherry picked from commita33ce66)Co-authored-by: Barney Gale <barney.gale@gmail.com>
1 parent1cbf844 commit846a23d

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
@@ -388,11 +388,11 @@ def _iterate_directories(self, parent_path, is_dir, scandir):
388388
forentryinentries:
389389
entry_is_dir=False
390390
try:
391-
entry_is_dir=entry.is_dir()
391+
entry_is_dir=entry.is_dir(follow_symlinks=False)
392392
exceptOSErrorase:
393393
ifnot_ignore_error(e):
394394
raise
395-
ifentry_is_dirandnotentry.is_symlink():
395+
ifentry_is_dir:
396396
path=parent_path._make_child_relpath(entry.name)
397397
forpinself._iterate_directories(path,is_dir,scandir):
398398
yieldp

‎Lib/test/test_pathlib.py

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

1793+
@os_helper.skip_unless_symlink
1794+
deftest_glob_long_symlink(self):
1795+
# See gh-87695
1796+
base=self.cls(BASE)/'long_symlink'
1797+
base.mkdir()
1798+
bad_link=base/'bad_link'
1799+
bad_link.symlink_to("bad"*200)
1800+
self.assertEqual(sorted(base.glob('**/*')), [bad_link])
1801+
17931802
def_check_resolve(self,p,expected,strict=True):
17941803
q=p.resolve(strict)
17951804
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