@@ -1363,31 +1363,33 @@ get_hash_info(PyThreadState *tstate)
1363
1363
int field = 0 ;
1364
1364
PyHash_FuncDef * hashfunc ;
1365
1365
hash_info = PyStructSequence_New (& Hash_InfoType );
1366
- if (hash_info == NULL )
1367
- return NULL ;
1368
- hashfunc = PyHash_GetFuncDef ();
1369
- PyStructSequence_SET_ITEM (hash_info , field ++ ,
1370
- PyLong_FromLong (8 * sizeof (Py_hash_t )));
1371
- PyStructSequence_SET_ITEM (hash_info , field ++ ,
1372
- PyLong_FromSsize_t (_PyHASH_MODULUS ));
1373
- PyStructSequence_SET_ITEM (hash_info , field ++ ,
1374
- PyLong_FromLong (_PyHASH_INF ));
1375
- PyStructSequence_SET_ITEM (hash_info , field ++ ,
1376
- PyLong_FromLong (0 )); // This is no longer used
1377
- PyStructSequence_SET_ITEM (hash_info , field ++ ,
1378
- PyLong_FromLong (_PyHASH_IMAG ));
1379
- PyStructSequence_SET_ITEM (hash_info , field ++ ,
1380
- PyUnicode_FromString (hashfunc -> name ));
1381
- PyStructSequence_SET_ITEM (hash_info , field ++ ,
1382
- PyLong_FromLong (hashfunc -> hash_bits ));
1383
- PyStructSequence_SET_ITEM (hash_info , field ++ ,
1384
- PyLong_FromLong (hashfunc -> seed_bits ));
1385
- PyStructSequence_SET_ITEM (hash_info , field ++ ,
1386
- PyLong_FromLong (Py_HASH_CUTOFF ));
1387
- if (_PyErr_Occurred (tstate )) {
1388
- Py_CLEAR (hash_info );
1366
+ if (hash_info == NULL ) {
1389
1367
return NULL ;
1390
1368
}
1369
+ hashfunc = PyHash_GetFuncDef ();
1370
+
1371
+ #define SET_HASH_INFO_ITEM (CALL ) \
1372
+ do { \
1373
+ PyObject *item = (CALL); \
1374
+ if (item == NULL) { \
1375
+ Py_CLEAR(hash_info); \
1376
+ return NULL; \
1377
+ } \
1378
+ PyStructSequence_SET_ITEM(hash_info, field++, item); \
1379
+ } while(0)
1380
+
1381
+ SET_HASH_INFO_ITEM (PyLong_FromLong (8 * sizeof (Py_hash_t )));
1382
+ SET_HASH_INFO_ITEM (PyLong_FromSsize_t (_PyHASH_MODULUS ));
1383
+ SET_HASH_INFO_ITEM (PyLong_FromLong (_PyHASH_INF ));
1384
+ SET_HASH_INFO_ITEM (PyLong_FromLong (0 )); // This is no longer used
1385
+ SET_HASH_INFO_ITEM (PyLong_FromLong (_PyHASH_IMAG ));
1386
+ SET_HASH_INFO_ITEM (PyUnicode_FromString (hashfunc -> name ));
1387
+ SET_HASH_INFO_ITEM (PyLong_FromLong (hashfunc -> hash_bits ));
1388
+ SET_HASH_INFO_ITEM (PyLong_FromLong (hashfunc -> seed_bits ));
1389
+ SET_HASH_INFO_ITEM (PyLong_FromLong (Py_HASH_CUTOFF ));
1390
+
1391
+ #undef SET_HASH_INFO_ITEM
1392
+
1391
1393
return hash_info ;
1392
1394
}
1393
1395
/*[clinic input]
0 commit comments