File tree 1 file changed +13
-8
lines changed
1 file changed +13
-8
lines changed Original file line number Diff line number Diff line change @@ -101,10 +101,18 @@ PyFloat_GetInfo(void)
101
101
return NULL ;
102
102
}
103
103
104
- #define SetIntFlag (flag ) \
105
- PyStructSequence_SET_ITEM(floatinfo, pos++, PyLong_FromLong(flag))
106
- #define SetDblFlag (flag ) \
107
- PyStructSequence_SET_ITEM(floatinfo, pos++, PyFloat_FromDouble(flag))
104
+ #define SetFlag (CALL ) \
105
+ do { \
106
+ PyObject *flag = (CALL); \
107
+ if (flag == NULL) { \
108
+ Py_CLEAR(floatinfo); \
109
+ return NULL; \
110
+ } \
111
+ PyStructSequence_SET_ITEM(floatinfo, pos++, flag); \
112
+ } while (0)
113
+
114
+ #define SetIntFlag (FLAG ) SetFlag(PyLong_FromLong((FLAG)))
115
+ #define SetDblFlag (FLAG ) SetFlag(PyFloat_FromDouble((FLAG)))
108
116
109
117
SetDblFlag (DBL_MAX );
110
118
SetIntFlag (DBL_MAX_EXP );
@@ -119,11 +127,8 @@ PyFloat_GetInfo(void)
119
127
SetIntFlag (FLT_ROUNDS );
120
128
#undef SetIntFlag
121
129
#undef SetDblFlag
130
+ #undef SetFlag
122
131
123
- if (PyErr_Occurred ()) {
124
- Py_CLEAR (floatinfo );
125
- return NULL ;
126
- }
127
132
return floatinfo ;
128
133
}
129
134
You can’t perform that action at this time.
0 commit comments