diff --git a/Lib/tarfile.py b/Lib/tarfile.py index 7db3a40c9b33cf..9b0b66a21cb13c 100644 --- a/Lib/tarfile.py +++ b/Lib/tarfile.py @@ -2438,7 +2438,7 @@ def extractall(self, path=".", members=None, *, numeric_owner=False, continue dirpath = os.path.join(path, tarinfo.name) try: - lstat = os.lstat(dirpath) + lstat = os.lstat(dirpath.replace(r'/', os.sep)) except FileNotFoundError: self._log_no_directory_fixup(tarinfo, 'missing') continue diff --git a/Misc/NEWS.d/next/Library/2026-01-10-17-39-09.gh-issue-143663.9LEFAf.rst b/Misc/NEWS.d/next/Library/2026-01-10-17-39-09.gh-issue-143663.9LEFAf.rst new file mode 100644 index 00000000000000..562258bda17eff --- /dev/null +++ b/Misc/NEWS.d/next/Library/2026-01-10-17-39-09.gh-issue-143663.9LEFAf.rst @@ -0,0 +1 @@ +:mod:`tarfile`: :meth:`TarFile.extractall` now uses OS-specific separators to call lstat. This fixes a failure case with raw Win32 paths on Windows.