mirror of
https://github.com/python/cpython.git
synced 2025-07-23 03:05:38 +00:00
bpo-44482: Fix very unlikely resource leak in glob in non-CPython implementations (GH-26843) (GH-26872)
(cherry picked from commit 5c7940257e
)
Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
This commit is contained in:
parent
280425d417
commit
38e021ab90
2 changed files with 9 additions and 2 deletions
|
@ -1,5 +1,6 @@
|
|||
"""Filename globbing utility."""
|
||||
|
||||
import contextlib
|
||||
import os
|
||||
import re
|
||||
import fnmatch
|
||||
|
@ -90,7 +91,7 @@ def _iglob(pathname, root_dir, dir_fd, recursive, dironly):
|
|||
# takes a literal basename (so it only has to check for its existence).
|
||||
|
||||
def _glob1(dirname, pattern, dir_fd, dironly):
|
||||
names = list(_iterdir(dirname, dir_fd, dironly))
|
||||
names = _listdir(dirname, dir_fd, dironly)
|
||||
if not _ishidden(pattern):
|
||||
names = (x for x in names if not _ishidden(x))
|
||||
return fnmatch.filter(names, pattern)
|
||||
|
@ -158,9 +159,13 @@ def _iterdir(dirname, dir_fd, dironly):
|
|||
except OSError:
|
||||
return
|
||||
|
||||
def _listdir(dirname, dir_fd, dironly):
|
||||
with contextlib.closing(_iterdir(dirname, dir_fd, dironly)) as it:
|
||||
return list(it)
|
||||
|
||||
# Recursively yields relative pathnames inside a literal directory.
|
||||
def _rlistdir(dirname, dir_fd, dironly):
|
||||
names = list(_iterdir(dirname, dir_fd, dironly))
|
||||
names = _listdir(dirname, dir_fd, dironly)
|
||||
for x in names:
|
||||
if not _ishidden(x):
|
||||
yield x
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
Fix very unlikely resource leak in :mod:`glob` in alternate Python
|
||||
implementations.
|
Loading…
Add table
Add a link
Reference in a new issue