Skip to content

Commit

Permalink
pythonGH-111293: Fix DirEntry.inode dropping higher bits on Windows (p…
Browse files Browse the repository at this point in the history
  • Loading branch information
zcxsythenew authored Oct 26, 2023
1 parent a0c414c commit b468538
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 3 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Fix :data:`os.DirEntry.inode` dropping higher 64 bits of a file id on some filesystems on Windows.
6 changes: 3 additions & 3 deletions Modules/posixmodule.c
Original file line number Diff line number Diff line change
Expand Up @@ -14805,6 +14805,7 @@ typedef struct {
#ifdef MS_WINDOWS
struct _Py_stat_struct win32_lstat;
uint64_t win32_file_index;
uint64_t win32_file_index_high;
int got_file_index;
#else /* POSIX */
#ifdef HAVE_DIRENT_D_TYPE
Expand Down Expand Up @@ -15134,11 +15135,10 @@ os_DirEntry_inode_impl(DirEntry *self)
}

self->win32_file_index = stat.st_ino;
self->win32_file_index_high = stat.st_ino_high;
self->got_file_index = 1;
}
static_assert(sizeof(unsigned long long) >= sizeof(self->win32_file_index),
"DirEntry.win32_file_index is larger than unsigned long long");
return PyLong_FromUnsignedLongLong(self->win32_file_index);
return _pystat_l128_from_l64_l64(self->win32_file_index, self->win32_file_index_high);
#else /* POSIX */
static_assert(sizeof(unsigned long long) >= sizeof(self->d_ino),
"DirEntry.d_ino is larger than unsigned long long");
Expand Down

0 comments on commit b468538

Please sign in to comment.