From: Erlend E. Aasland Date: Sun, 11 Jun 2023 10:06:06 +0000 (+0200) Subject: gh-105375: Improve _decimal error handling (#105605) X-Git-Tag: v3.13.0a1~1798 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c932f7284977ebf813313157c52d716ba225a7ac;p=thirdparty%2FPython%2Fcpython.git gh-105375: Improve _decimal error handling (#105605) Fix a bug where an exception could end up being overwritten. --- diff --git a/Misc/NEWS.d/next/Library/2023-06-09-22-52-45.gh-issue-105375.6igkhn.rst b/Misc/NEWS.d/next/Library/2023-06-09-22-52-45.gh-issue-105375.6igkhn.rst new file mode 100644 index 000000000000..05e78fdc9b40 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2023-06-09-22-52-45.gh-issue-105375.6igkhn.rst @@ -0,0 +1 @@ +Fix bug in :mod:`decimal` where an exception could end up being overwritten. diff --git a/Modules/_decimal/_decimal.c b/Modules/_decimal/_decimal.c index c8ff3896ba1a..73df3f34829f 100644 --- a/Modules/_decimal/_decimal.c +++ b/Modules/_decimal/_decimal.c @@ -3611,9 +3611,13 @@ dec_as_integer_ratio(PyObject *self, PyObject *args UNUSED) goto error; } Py_SETREF(numerator, _py_long_floor_divide(numerator, tmp)); + if (numerator == NULL) { + Py_DECREF(tmp); + goto error; + } Py_SETREF(denominator, _py_long_floor_divide(denominator, tmp)); Py_DECREF(tmp); - if (numerator == NULL || denominator == NULL) { + if (denominator == NULL) { goto error; } }