From e088274b2b7421478f83d861e26b0899a7cf89f3 Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Thu, 11 Sep 2025 11:09:36 +0300 Subject: [PATCH] gh-138779: Use the dev_t converter for st_rdev This allows to support device numbers larger than 2**63-1. --- .../Library/2025-09-11-11-09-28.gh-issue-138779.TNZnLr.rst | 3 +++ Modules/posixmodule.c | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 Misc/NEWS.d/next/Library/2025-09-11-11-09-28.gh-issue-138779.TNZnLr.rst diff --git a/Misc/NEWS.d/next/Library/2025-09-11-11-09-28.gh-issue-138779.TNZnLr.rst b/Misc/NEWS.d/next/Library/2025-09-11-11-09-28.gh-issue-138779.TNZnLr.rst new file mode 100644 index 00000000000000..d54f21ffb89669 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2025-09-11-11-09-28.gh-issue-138779.TNZnLr.rst @@ -0,0 +1,3 @@ +Support device numbers larger than ``2**63-1`` for the +:attr:`~os.stat_result.st_rdev` field of the :class:`os.stat_result` +structure. diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c index 50d0ff1dc2127c..1a9475b7f7caa1 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -2759,7 +2759,7 @@ _pystat_fromstructstat(PyObject *module, STRUCT_STAT *st) SET_ITEM(ST_BLOCKS_IDX, PyLong_FromLong((long)st->st_blocks)); #endif #ifdef HAVE_STRUCT_STAT_ST_RDEV - SET_ITEM(ST_RDEV_IDX, PyLong_FromLong((long)st->st_rdev)); + SET_ITEM(ST_RDEV_IDX, _PyLong_FromDev(st->st_rdev)); #endif #ifdef HAVE_STRUCT_STAT_ST_GEN SET_ITEM(ST_GEN_IDX, PyLong_FromLong((long)st->st_gen));