◐ Shell
reader mode source ↗
Skip to content
Merged
Show file tree
Changes from all commits
File filter
Conversations
Jump to
Diff view
Apply and reload
Show whitespace
Diff view
Apply and reload
2 changes: 1 addition & 1 deletion Include/fileutils.h
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ PyAPI_FUNC(PyObject *) _Py_device_encoding(int);
#ifdef MS_WINDOWS
struct _Py_stat_struct {
unsigned long st_dev;
__int64 st_ino;
unsigned short st_mode;
int st_nlink;
int st_uid;
Expand Down
5 changes: 4 additions & 1 deletion Misc/NEWS
Original file line number Diff line number Diff line change
Expand Up @@ -270,6 +270,9 @@ Extension Modules
Library
-------

- bpo-28298: Fix a bug that prevented array 'Q', 'L' and 'I' from accepting big
intables (objects that have __int__) as elements.

Expand All @@ -289,7 +292,7 @@ Library

- bpo-9303: Migrate sqlite3 module to _v2 API. Patch by Aviv Palivoda.

- bpo-28963: Fix out of bound iteration in asyncio.Future.remove_done_callback
implemented in C.

- bpo-29704: asyncio.subprocess.SubprocessStreamProtocol no longer closes before
Expand Down
13 changes: 8 additions & 5 deletions Modules/posixmodule.c
Original file line number Diff line number Diff line change
Expand Up @@ -1927,11 +1927,13 @@ _pystat_fromstructstat(STRUCT_STAT *st)
return NULL;

PyStructSequence_SET_ITEM(v, 0, PyLong_FromLong((long)st->st_mode));
#ifdef HAVE_LARGEFILE_SUPPORT
PyStructSequence_SET_ITEM(v, 1,
PyLong_FromLongLong((long long)st->st_ino));
#else
PyStructSequence_SET_ITEM(v, 1, PyLong_FromLong((long)st->st_ino));
#endif
#ifdef MS_WINDOWS
PyStructSequence_SET_ITEM(v, 2, PyLong_FromUnsignedLong(st->st_dev));
Expand Down Expand Up @@ -11152,7 +11154,7 @@ typedef struct {
PyObject *lstat;
#ifdef MS_WINDOWS
struct _Py_stat_struct win32_lstat;
__int64 win32_file_index;
int got_file_index;
#else /* POSIX */
#ifdef HAVE_DIRENT_D_TYPE
Expand Down Expand Up @@ -11409,7 +11411,8 @@ os_DirEntry_inode_impl(DirEntry *self)
self->win32_file_index = stat.st_ino;
self->got_file_index = 1;
}
return PyLong_FromLongLong((long long)self->win32_file_index);
#else /* POSIX */
#ifdef HAVE_LARGEFILE_SUPPORT
return PyLong_FromLongLong((long long)self->d_ino);
Expand Down
4 changes: 2 additions & 2 deletions Python/fileutils.c
Original file line number Diff line number Diff line change
Expand Up @@ -583,7 +583,7 @@ _Py_attribute_data_to_stat(BY_HANDLE_FILE_INFORMATION *info, ULONG reparse_tag,
FILE_TIME_to_time_t_nsec(&info->ftLastWriteTime, &result->st_mtime, &result->st_mtime_nsec);
FILE_TIME_to_time_t_nsec(&info->ftLastAccessTime, &result->st_atime, &result->st_atime_nsec);
result->st_nlink = info->nNumberOfLinks;
result->st_ino = (((__int64)info->nFileIndexHigh)<<32) + info->nFileIndexLow;
if (reparse_tag == IO_REPARSE_TAG_SYMLINK) {
/* first clear the S_IFMT bits */
result->st_mode ^= (result->st_mode & S_IFMT);
Expand Down Expand Up @@ -653,7 +653,7 @@ _Py_fstat_noraise(int fd, struct _Py_stat_struct *status)

_Py_attribute_data_to_stat(&info, 0, status);
/* specific to fstat() */
status->st_ino = (((__int64)info.nFileIndexHigh)<<32) + info.nFileIndexLow;
return 0;
#else
return fstat(fd, status);
Expand Down
Toggle all file notes Toggle all file annotations