8000 GH-111293: Fix DirEntry.inode dropping higher bits on Windows (GH-111… · python/cpython@b468538 · GitHub
[go: up one dir, main page]

Skip to content

Commit b468538

Browse files
authored
GH-111293: Fix DirEntry.inode dropping higher bits on Windows (GH-111294)
1 parent a0c414c commit b468538

File tree

2 files changed

+4
-3
lines changed

2 files changed

+4
-3
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Fix :data:`os.DirEntry.inode` dropping higher 64 bits of a file id on some filesystems on Windows.

Modules/posixmodule.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14805,6 +14805,7 @@ typedef struct {
1480514805
#ifdef MS_WINDOWS
1480614806
struct _Py_stat_struct win32_lstat;
1480714807
uint64_t win32_file_index;
14808+
uint64_t win32_file_index_high;
1480814809
int got_file_index;
1480914810
#else /* POSIX */
1481014811
#ifdef HAVE_DIRENT_D_TYPE
@@ -15134,11 +15135,10 @@ os_DirEntry_inode_impl(DirEntry *self)
1513415135
}
1513515136

1513615137
self->win32_file_index = stat.st_ino;
15138+
self->win32_file_index_high = stat.st_ino_high;
1513715139
self->got_file_index = 1;
1513815140
}
15139-
static_assert(sizeof(unsigned long long) >= sizeof(self->win32_file_index),
15140-
"DirEntry.win32_file_index is larger than unsigned long long");
15141-
return PyLong_FromUnsignedLongLong(self->win32_file_index);
15141+
return _pystat_l128_from_l64_l64(self->win32_file_index, self->win32_file_index_high);
1514215142
#else /* POSIX */
1514315143
static_assert(sizeof(unsigned long long) >= sizeof(self->d_ino),
1514415144
"DirEntry.d_ino is larger than unsigned long long");

0 commit comments

Comments
 (0)
0