@@ -1439,31 +1439,33 @@ get_hash_info(PyThreadState *tstate)
1439
1439
int field = 0 ;
1440
1440
PyHash_FuncDef * hashfunc ;
1441
1441
hash_info = PyStructSequence_New (& Hash_InfoType );
1442
- if (hash_info == NULL )
1443
- return NULL ;
1444
- hashfunc = PyHash_GetFuncDef ();
1445
- PyStructSequence_SET_ITEM (hash_info , field ++ ,
1446
- PyLong_FromLong (8 * sizeof (Py_hash_t )));
1447
- PyStructSequence_SET_ITEM (hash_info , field ++ ,
1448
- PyLong_FromSsize_t (_PyHASH_MODULUS ));
1449
- PyStructSequence_SET_ITEM (hash_info , field ++ ,
1450
- PyLong_FromLong (_PyHASH_INF ));
1451
- PyStructSequence_SET_ITEM (hash_info , field ++ ,
1452
- PyLong_FromLong (0 )); // This is no longer used
1453
- PyStructSequence_SET_ITEM (hash_info , field ++ ,
1454
- PyLong_FromLong (_PyHASH_IMAG ));
1455
- PyStructSequence_SET_ITEM (hash_info , field ++ ,
1456
- PyUnicode_FromString (hashfunc -> name ));
1457
- PyStructSequence_SET_ITEM (hash_info , field ++ ,
1458
- PyLong_FromLong (hashfunc -> hash_bits ));
1459
- PyStructSequence_SET_ITEM (hash_info , field ++ ,
1460
- PyLong_FromLong (hashfunc -> seed_bits ));
1461
- PyStructSequence_SET_ITEM (hash_info , field ++ ,
1462
- PyLong_FromLong (Py_HASH_CUTOFF ));
1463
- if (_PyErr_Occurred (tstate )) {
1464
- Py_CLEAR (hash_info );
1442
+ if (hash_info == NULL ) {
1465
1443
return NULL ;
1466
1444
}
1445
+ hashfunc = PyHash_GetFuncDef ();
1446
+
1447
+ #define SET_HASH_INFO_ITEM (CALL ) \
1448
+ do { \
1449
+ PyObject *item = (CALL); \
1450
+ if (item == NULL) { \
1451
+ Py_CLEAR(hash_info); \
1452
+ return NULL; \
1453
+ } \
1454
+ PyStructSequence_SET_ITEM(hash_info, field++, item); \
1455
+ } while(0)
1456
+
1457
+ SET_HASH_INFO_ITEM (PyLong_FromLong (8 * sizeof (Py_hash_t )));
1458
+ SET_HASH_INFO_ITEM (PyLong_FromSsize_t (_PyHASH_MODULUS ));
1459
+ SET_HASH_INFO_ITEM (PyLong_FromLong (_PyHASH_INF ));
1460
+ SET_HASH_INFO_ITEM (PyLong_FromLong (0 )); // This is no longer used
1461
+ SET_HASH_INFO_ITEM (PyLong_FromLong (_PyHASH_IMAG ));
1462
+ SET_HASH_INFO_ITEM (PyUnicode_FromString (hashfunc -> name ));
1463
+ SET_HASH_INFO_ITEM (PyLong_FromLong (hashfunc -> hash_bits ));
1464
+ SET_HASH_INFO_ITEM (PyLong_FromLong (hashfunc -> seed_bits ));
1465
+ SET_HASH_INFO_ITEM (PyLong_FromLong (Py_HASH_CUTOFF ));
1466
+
1467
+ #undef SET_HASH_INFO_ITEM
1468
+
1467
1469
return hash_info ;
1468
1470
}
1469
1471
/*[clinic input]
0 commit comments