@@ -11463,46 +11463,50 @@ _pystatvfs_fromstructstatvfs(PyObject *module, struct statvfs st) {
11463
11463
if (v == NULL )
11464
11464
return NULL ;
11465
11465
11466
+ int pos = 0 ;
11467
+
11468
+ #define SET_RESULT (CALL ) \
11469
+ do { \
11470
+ PyObject *item = (CALL); \
11471
+ if (item == NULL) { \
11472
+ Py_DECREF(v); \
11473
+ return NULL; \
11474
+ } \
11475
+ PyStructSequence_SET_ITEM(v, pos++, item); \
11476
+ } while(0)
11477
+
11466
11478
#if !defined(HAVE_LARGEFILE_SUPPORT )
11467
- PyStructSequence_SET_ITEM ( v , 0 , PyLong_FromLong ((long ) st .f_bsize ));
11468
- PyStructSequence_SET_ITEM ( v , 1 , PyLong_FromLong ((long ) st .f_frsize ));
11469
- PyStructSequence_SET_ITEM ( v , 2 , PyLong_FromLong ((long ) st .f_blocks ));
11470
- PyStructSequence_SET_ITEM ( v , 3 , PyLong_FromLong ((long ) st .f_bfree ));
11471
- PyStructSequence_SET_ITEM ( v , 4 , PyLong_FromLong ((long ) st .f_bavail ));
11472
- PyStructSequence_SET_ITEM ( v , 5 , PyLong_FromLong ((long ) st .f_files ));
11473
- PyStructSequence_SET_ITEM ( v , 6 , PyLong_FromLong ((long ) st .f_ffree ));
11474
- PyStructSequence_SET_ITEM ( v , 7 , PyLong_FromLong ((long ) st .f_favail ));
11475
- PyStructSequence_SET_ITEM ( v , 8 , PyLong_FromLong ((long ) st .f_flag ));
11476
- PyStructSequence_SET_ITEM ( v , 9 , PyLong_FromLong ((long ) st .f_namemax ));
11479
+ SET_RESULT ( PyLong_FromLong ((long ) st .f_bsize ));
11480
+ SET_RESULT ( PyLong_FromLong ((long ) st .f_frsize ));
11481
+ SET_RESULT ( PyLong_FromLong ((long ) st .f_blocks ));
11482
+ SET_RESULT ( PyLong_FromLong ((long ) st .f_bfree ));
11483
+ SET_RESULT ( PyLong_FromLong ((long ) st .f_bavail ));
11484
+ SET_RESULT ( PyLong_FromLong ((long ) st .f_files ));
11485
+ SET_RESULT ( PyLong_FromLong ((long ) st .f_ffree ));
11486
+ SET_RESULT ( PyLong_FromLong ((long ) st .f_favail ));
11487
+ SET_RESULT ( PyLong_FromLong ((long ) st .f_flag ));
11488
+ SET_RESULT ( PyLong_FromLong ((long ) st .f_namemax ));
11477
11489
#else
11478
- PyStructSequence_SET_ITEM (v , 0 , PyLong_FromLong ((long ) st .f_bsize ));
11479
- PyStructSequence_SET_ITEM (v , 1 , PyLong_FromLong ((long ) st .f_frsize ));
11480
- PyStructSequence_SET_ITEM (v , 2 ,
11481
- PyLong_FromLongLong ((long long ) st .f_blocks ));
11482
- PyStructSequence_SET_ITEM (v , 3 ,
11483
- PyLong_FromLongLong ((long long ) st .f_bfree ));
11484
- PyStructSequence_SET_ITEM (v , 4 ,
11485
- PyLong_FromLongLong ((long long ) st .f_bavail ));
11486
- PyStructSequence_SET_ITEM (v , 5 ,
11487
- PyLong_FromLongLong ((long long ) st .f_files ));
11488
- PyStructSequence_SET_ITEM (v , 6 ,
11489
- PyLong_FromLongLong ((long long ) st .f_ffree ));
11490
- PyStructSequence_SET_ITEM (v , 7 ,
11491
- PyLong_FromLongLong ((long long ) st .f_favail ));
11492
- PyStructSequence_SET_ITEM (v , 8 , PyLong_FromLong ((long ) st .f_flag ));
11493
- PyStructSequence_SET_ITEM (v , 9 , PyLong_FromLong ((long ) st .f_namemax ));
11490
+ SET_RESULT (PyLong_FromLong ((long ) st .f_bsize ));
11491
+ SET_RESULT (PyLong_FromLong ((long ) st .f_frsize ));
11492
+ SET_RESULT (PyLong_FromLongLong ((long long ) st .f_blocks ));
11493
+ SET_RESULT (PyLong_FromLongLong ((long long ) st .f_bfree ));
11494
+ SET_RESULT (PyLong_FromLongLong ((long long ) st .f_bavail ));
11495
+ SET_RESULT (PyLong_FromLongLong ((long long ) st .f_files ));
11496
+ SET_RESULT (PyLong_FromLongLong ((long long ) st .f_ffree ));
11497
+ SET_RESULT (PyLong_FromLongLong ((long long ) st .f_favail ));
11498
+ SET_RESULT (PyLong_FromLong ((long ) st .f_flag ));
11499
+ SET_RESULT (PyLong_FromLong ((long ) st .f_namemax ));
11494
11500
#endif
11495
11501
/* The _ALL_SOURCE feature test macro defines f_fsid as a structure
11496
11502
* (issue #32390). */
11497
11503
#if defined(_AIX ) && defined(_ALL_SOURCE )
11498
- PyStructSequence_SET_ITEM ( v , 10 , PyLong_FromUnsignedLong (st .f_fsid .val [0 ]));
11504
+ SET_RESULT ( PyLong_FromUnsignedLong (st .f_fsid .val [0 ]));
11499
11505
#else
11500
- PyStructSequence_SET_ITEM ( v , 10 , PyLong_FromUnsignedLong (st .f_fsid ));
11506
+ SET_RESULT ( PyLong_FromUnsignedLong (st .f_fsid ));
11501
11507
#endif
11502
- if (PyErr_Occurred ()) {
11503
- Py_DECREF (v );
11504
- return NULL ;
11505
- }
11508
+
11509
+ #undef SET_RESULT
11506
11510
11507
11511
return v ;
11508
11512
}
0 commit comments