@@ -12980,46 +12980,50 @@ _pystatvfs_fromstructstatvfs(PyObject *module, struct statvfs st) {
12980
12980
if (v == NULL )
12981
12981
return NULL ;
12982
12982
12983
+ int pos = 0 ;
12984
+
12985
+ #define SET_RESULT (CALL ) \
12986
+ do { \
12987
+ PyObject *item = (CALL); \
12988
+ if (item == NULL) { \
12989
+ Py_DECREF(v); \
12990
+ return NULL; \
12991
+ } \
12992
+ PyStructSequence_SET_ITEM(v, pos++, item); \
12993
+ } while(0)
12994
+
12983
12995
#if !defined(HAVE_LARGEFILE_SUPPORT )
12984
- PyStructSequence_SET_ITEM ( v , 0 , PyLong_FromLong ((long ) st .f_bsize ));
12985
- PyStructSequence_SET_ITEM ( v , 1 , PyLong_FromLong ((long ) st .f_frsize ));
12986
- PyStructSequence_SET_ITEM ( v , 2 , PyLong_FromLong ((long ) st .f_blocks ));
12987
- PyStructSequence_SET_ITEM ( v , 3 , PyLong_FromLong ((long ) st .f_bfree ));
12988
- PyStructSequence_SET_ITEM ( v , 4 , PyLong_FromLong ((long ) st .f_bavail ));
12989
- PyStructSequence_SET_ITEM ( v , 5 , PyLong_FromLong ((long ) st .f_files ));
12990
- PyStructSequence_SET_ITEM ( v , 6 , PyLong_FromLong ((long ) st .f_ffree ));
12991
- PyStructSequence_SET_ITEM ( v , 7 , PyLong_FromLong ((long ) st .f_favail ));
12992
- PyStructSequence_SET_ITEM ( v , 8 , PyLong_FromLong ((long ) st .f_flag ));
12993
- PyStructSequence_SET_ITEM ( v , 9 , PyLong_FromLong ((long ) st .f_namemax ));
12996
+ SET_RESULT ( PyLong_FromLong ((long ) st .f_bsize ));
12997
+ SET_RESULT ( PyLong_FromLong ((long ) st .f_frsize ));
12998
+ SET_RESULT ( PyLong_FromLong ((long ) st .f_blocks ));
12999
+ SET_RESULT ( PyLong_FromLong ((long ) st .f_bfree ));
13000
+ SET_RESULT ( PyLong_FromLong ((long ) st .f_bavail ));
13001
+ SET_RESULT ( PyLong_FromLong ((long ) st .f_files ));
13002
+ SET_RESULT ( PyLong_FromLong ((long ) st .f_ffree ));
13003
+ SET_RESULT ( PyLong_FromLong ((long ) st .f_favail ));
13004
+ SET_RESULT ( PyLong_FromLong ((long ) st .f_flag ));
13005
+ SET_RESULT ( PyLong_FromLong ((long ) st .f_namemax ));
12994
13006
#else
12995
- PyStructSequence_SET_ITEM (v , 0 , PyLong_FromLong ((long ) st .f_bsize ));
12996
- PyStructSequence_SET_ITEM (v , 1 , PyLong_FromLong ((long ) st .f_frsize ));
12997
- PyStructSequence_SET_ITEM (v , 2 ,
12998
- PyLong_FromLongLong ((long long ) st .f_blocks ));
12999
- PyStructSequence_SET_ITEM (v , 3 ,
13000
- PyLong_FromLongLong ((long long ) st .f_bfree ));
13001
- PyStructSequence_SET_ITEM (v , 4 ,
13002
- PyLong_FromLongLong ((long long ) st .f_bavail ));
13003
- PyStructSequence_SET_ITEM (v , 5 ,
13004
- PyLong_FromLongLong ((long long ) st .f_files ));
13005
- PyStructSequence_SET_ITEM (v , 6 ,
13006
- PyLong_FromLongLong ((long long ) st .f_ffree ));
13007
- PyStructSequence_SET_ITEM (v , 7 ,
13008
- PyLong_FromLongLong ((long long ) st .f_favail ));
13009
- PyStructSequence_SET_ITEM (v , 8 , PyLong_FromLong ((long ) st .f_flag ));
13010
- PyStructSequence_SET_ITEM (v , 9 , PyLong_FromLong ((long ) st .f_namemax ));
13007
+ SET_RESULT (PyLong_FromLong ((long ) st .f_bsize ));
13008
+ SET_RESULT (PyLong_FromLong ((long ) st .f_frsize ));
13009
+ SET_RESULT (PyLong_FromLongLong ((long long ) st .f_blocks ));
13010
+ SET_RESULT (PyLong_FromLongLong ((long long ) st .f_bfree ));
13011
+ SET_RESULT (PyLong_FromLongLong ((long long ) st .f_bavail ));
13012
+ SET_RESULT (PyLong_FromLongLong ((long long ) st .f_files ));
13013
+ SET_RESULT (PyLong_FromLongLong ((long long ) st .f_ffree ));
13014
+ SET_RESULT (PyLong_FromLongLong ((long long ) st .f_favail ));
13015
+ SET_RESULT (PyLong_FromLong ((long ) st .f_flag ));
13016
+ SET_RESULT (PyLong_FromLong ((long ) st .f_namemax ));
13011
13017
#endif
13012
13018
/* The _ALL_SOURCE feature test macro defines f_fsid as a structure
13013
13019
* (issue #32390). */
13014
13020
#if defined(_AIX ) && defined(_ALL_SOURCE )
13015
- PyStructSequence_SET_ITEM ( v , 10 , PyLong_FromUnsignedLong (st .f_fsid .val [0 ]));
13021
+ SET_RESULT ( PyLong_FromUnsignedLong (st .f_fsid .val [0 ]));
13016
13022
#else
13017
- PyStructSequence_SET_ITEM ( v , 10 , PyLong_FromUnsignedLong (st .f_fsid ));
13023
+ SET_RESULT ( PyLong_FromUnsignedLong (st .f_fsid ));
13018
13024
#endif
13019
- if (PyErr_Occurred ()) {
13020
- Py_DECREF (v );
13021
- return NULL ;
13022
- }
13025
+
13026
+ #undef SET_RESULT
13023
13027
13024
13028
return v ;
13025
13029
}
0 commit comments