diff --git a/Misc/NEWS.d/next/Core and Builtins/2017-12-22-13-28-07.bpo-32390.QPj083.rst b/Misc/NEWS.d/next/Core and Builtins/2017-12-22-13-28-07.bpo-32390.QPj083.rst new file mode 100644 index 00000000000..0e9c1bff540 --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2017-12-22-13-28-07.bpo-32390.QPj083.rst @@ -0,0 +1 @@ +Fix the compilation failure on AIX after the f_fsid field has been added to the object returned by os.statvfs() (issue #32143). Original patch by Michael Felt. diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c index 47b79fcc798..b0e48dabbd5 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -9336,7 +9336,13 @@ _pystatvfs_fromstructstatvfs(struct statvfs st) { PyStructSequence_SET_ITEM(v, 8, PyLong_FromLong((long) st.f_flag)); PyStructSequence_SET_ITEM(v, 9, PyLong_FromLong((long) st.f_namemax)); #endif +/* The _ALL_SOURCE feature test macro defines f_fsid as a structure + * (issue #32390). */ +#if defined(_AIX) && defined(_ALL_SOURCE) + PyStructSequence_SET_ITEM(v, 10, PyLong_FromUnsignedLong(st.f_fsid.val[0])); +#else PyStructSequence_SET_ITEM(v, 10, PyLong_FromUnsignedLong(st.f_fsid)); +#endif if (PyErr_Occurred()) { Py_DECREF(v); return NULL;