@@ -12371,46 +12371,50 @@ _pystatvfs_fromstructstatvfs(PyObject *module, struct statvfs st) {
12371
12371
if (v == NULL )
12372
12372
return NULL ;
12373
12373
12374
+ int pos = 0 ;
12375
+
12376
+ #define SET_RESULT (CALL ) \
12377
+ do { \
12378
+ PyObject *item = (CALL); \
12379
+ if (item == NULL) { \
12380
+ Py_DECREF(v); \
12381
+ return NULL; \
12382
+ } \
12383
+ PyStructSequence_SET_ITEM(v, pos++, item); \
12384
+ } while(0)
12385
+
12374
12386
#if !defined(HAVE_LARGEFILE_SUPPORT )
12375
- PyStructSequence_SET_ITEM ( v , 0 , PyLong_FromLong ((long ) st .f_bsize ));
12376
- PyStructSequence_SET_ITEM ( v , 1 , PyLong_FromLong ((long ) st .f_frsize ));
12377
- PyStructSequence_SET_ITEM ( v , 2 , PyLong_FromLong ((long ) st .f_blocks ));
12378
- PyStructSequence_SET_ITEM ( v , 3 , PyLong_FromLong ((long ) st .f_bfree ));
12379
- PyStructSequence_SET_ITEM ( v , 4 , PyLong_FromLong ((long ) st .f_bavail ));
12380
- PyStructSequence_SET_ITEM ( v , 5 , PyLong_FromLong ((long ) st .f_files ));
12381
- PyStructSequence_SET_ITEM ( v , 6 , PyLong_FromLong ((long ) st .f_ffree ));
12382
- PyStructSequence_SET_ITEM ( v , 7 , PyLong_FromLong ((long ) st .f_favail ));
12383
- PyStructSequence_SET_ITEM ( v , 8 , PyLong_FromLong ((long ) st .f_flag ));
12384
- PyStructSequence_SET_ITEM ( v , 9 , PyLong_FromLong ((long ) st .f_namemax ));
12387
+ SET_RESULT ( PyLong_FromLong ((long ) st .f_bsize ));
12388
+ SET_RESULT ( PyLong_FromLong ((long ) st .f_frsize ));
12389
+ SET_RESULT ( PyLong_FromLong ((long ) st .f_blocks ));
12390
+ SET_RESULT ( PyLong_FromLong ((long ) st .f_bfree ));
12391
+ SET_RESULT ( PyLong_FromLong ((long ) st .f_bavail ));
12392
+ SET_RESULT ( PyLong_FromLong ((long ) st .f_files ));
12393
+ SET_RESULT ( PyLong_FromLong ((long ) st .f_ffree ));
12394
+ SET_RESULT ( PyLong_FromLong ((long ) st .f_favail ));
12395
+ SET_RESULT ( PyLong_FromLong ((long ) st .f_flag ));
12396
+ SET_RESULT ( PyLong_FromLong ((long ) st .f_namemax ));
12385
12397
#else
12386
- PyStructSequence_SET_ITEM (v , 0 , PyLong_FromLong ((long ) st .f_bsize ));
12387
- PyStructSequence_SET_ITEM (v , 1 , PyLong_FromLong ((long ) st .f_frsize ));
12388
- PyStructSequence_SET_ITEM (v , 2 ,
12389
- PyLong_FromLongLong ((long long ) st .f_blocks ));
12390
- PyStructSequence_SET_ITEM (v , 3 ,
12391
- PyLong_FromLongLong ((long long ) st .f_bfree ));
12392
- PyStructSequence_SET_ITEM (v , 4 ,
12393
- PyLong_FromLongLong ((long long ) st .f_bavail ));
12394
- PyStructSequence_SET_ITEM (v , 5 ,
12395
- PyLong_FromLongLong ((long long ) st .f_files ));
12396
- PyStructSequence_SET_ITEM (v , 6 ,
12397
- PyLong_FromLongLong ((long long ) st .f_ffree ));
12398
- PyStructSequence_SET_ITEM (v , 7 ,
12399
- PyLong_FromLongLong ((long long ) st .f_favail ));
12400
- PyStructSequence_SET_ITEM (v , 8 , PyLong_FromLong ((long ) st .f_flag ));
12401
- PyStructSequence_SET_ITEM (v , 9 , PyLong_FromLong ((long ) st .f_namemax ));
12398
+ SET_RESULT (PyLong_FromLong ((long ) st .f_bsize ));
12399
+ SET_RESULT (PyLong_FromLong ((long ) st .f_frsize ));
12400
+ SET_RESULT (PyLong_FromLongLong ((long long ) st .f_blocks ));
12401
+ SET_RESULT (PyLong_FromLongLong ((long long ) st .f_bfree ));
12402
+ SET_RESULT (PyLong_FromLongLong ((long long ) st .f_bavail ));
12403
+ SET_RESULT (PyLong_FromLongLong ((long long ) st .f_files ));
12404
+ SET_RESULT (PyLong_FromLongLong ((long long ) st .f_ffree ));
12405
+ SET_RESULT (PyLong_FromLongLong ((long long ) st .f_favail ));
12406
+ SET_RESULT (PyLong_FromLong ((long ) st .f_flag ));
12407
+ SET_RESULT (PyLong_FromLong ((long ) st .f_namemax ));
12402
12408
#endif
12403
12409
/* The _ALL_SOURCE feature test macro defines f_fsid as a structure
12404
12410
* (issue #32390). */
12405
12411
#if defined(_AIX ) && defined(_ALL_SOURCE )
12406
- PyStructSequence_SET_ITEM ( v , 10 , PyLong_FromUnsignedLong (st .f_fsid .val [0 ]));
12412
+ SET_RESULT ( PyLong_FromUnsignedLong (st .f_fsid .val [0 ]));
12407
12413
#else
12408
- PyStructSequence_SET_ITEM ( v , 10 , PyLong_FromUnsignedLong (st .f_fsid ));
12414
+ SET_RESULT ( PyLong_FromUnsignedLong (st .f_fsid ));
12409
12415
#endif
12410
- if (PyErr_Occurred ()) {
12411
- Py_DECREF (v );
12412
- return NULL ;
12413
- }
12416
+
12417
+ #undef SET_RESULT
12414
12418
12415
12419
return v ;
12416
12420
}
0 commit comments