https://github.com/python/cpython/commit/bccd1f691fc03ddf36ef524f038fe0133ddf7517 commit: bccd1f691fc03ddf36ef524f038fe0133ddf7517 branch: 3.11 author: Miss Islington (bot) <[email protected]> committer: sobolevn <[email protected]> date: 2024-03-13T16:40:30+03:00 summary:
[3.11] gh-116714: Handle errors correctly in `PyFloat_GetInfo` (GH-116715) (#116723) gh-116714: Handle errors correctly in `PyFloat_GetInfo` (GH-116715) (cherry picked from commit fcd49b4f47f1edd9a2717f6619da7e7af8ea73cf) Co-authored-by: Nikita Sobolev <[email protected]> Co-authored-by: Serhiy Storchaka <[email protected]> files: M Objects/floatobject.c diff --git a/Objects/floatobject.c b/Objects/floatobject.c index be6024659ab851..29a74f243e9069 100644 --- a/Objects/floatobject.c +++ b/Objects/floatobject.c @@ -101,10 +101,18 @@ PyFloat_GetInfo(void) return NULL; } -#define SetIntFlag(flag) \ - PyStructSequence_SET_ITEM(floatinfo, pos++, PyLong_FromLong(flag)) -#define SetDblFlag(flag) \ - PyStructSequence_SET_ITEM(floatinfo, pos++, PyFloat_FromDouble(flag)) +#define SetFlag(CALL) \ + do { \ + PyObject *flag = (CALL); \ + if (flag == NULL) { \ + Py_CLEAR(floatinfo); \ + return NULL; \ + } \ + PyStructSequence_SET_ITEM(floatinfo, pos++, flag); \ + } while (0) + +#define SetIntFlag(FLAG) SetFlag(PyLong_FromLong((FLAG))) +#define SetDblFlag(FLAG) SetFlag(PyFloat_FromDouble((FLAG))) SetDblFlag(DBL_MAX); SetIntFlag(DBL_MAX_EXP); @@ -119,11 +127,8 @@ PyFloat_GetInfo(void) SetIntFlag(FLT_ROUNDS); #undef SetIntFlag #undef SetDblFlag +#undef SetFlag - if (PyErr_Occurred()) { - Py_CLEAR(floatinfo); - return NULL; - } return floatinfo; } _______________________________________________ Python-checkins mailing list -- [email protected] To unsubscribe send an email to [email protected] https://mail.python.org/mailman3/lists/python-checkins.python.org/ Member address: [email protected]
