From d424344ce9e7f4a5d7ed42f660a33769e5606f9a Mon Sep 17 00:00:00 2001 From: "Miss Islington (bot)" <31488909+miss-islington@users.noreply.github.com> Date: Wed, 8 Oct 2025 14:26:59 +0200 Subject: [PATCH] [3.14] bpo-41839: Fix error checking in sched_get_priority_ functions (GH-22374) (GH-138201) MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit (cherry picked from commit bbcb75c986c47887e6c0757e63d59cd7af544f39) Co-authored-by: Jakub Kulík --- .../Library/2020-09-23-11-54-17.bpo-41839.kU5Ywl.rst | 2 ++ Modules/posixmodule.c | 12 +++++++----- 2 files changed, 9 insertions(+), 5 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2020-09-23-11-54-17.bpo-41839.kU5Ywl.rst diff --git a/Misc/NEWS.d/next/Library/2020-09-23-11-54-17.bpo-41839.kU5Ywl.rst b/Misc/NEWS.d/next/Library/2020-09-23-11-54-17.bpo-41839.kU5Ywl.rst new file mode 100644 index 000000000000..760660408100 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-09-23-11-54-17.bpo-41839.kU5Ywl.rst @@ -0,0 +1,2 @@ +Allow negative priority values from :func:`os.sched_get_priority_min` and +:func:`os.sched_get_priority_max` functions. diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c index c6bc9c9c5048..06a40db10780 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -8186,10 +8186,10 @@ static PyObject * os_sched_get_priority_max_impl(PyObject *module, int policy) /*[clinic end generated code: output=9e465c6e43130521 input=2097b7998eca6874]*/ { - int max; - - max = sched_get_priority_max(policy); - if (max < 0) + /* make sure that errno is cleared before the call */ + errno = 0; + int max = sched_get_priority_max(policy); + if (max == -1 && errno) return posix_error(); return PyLong_FromLong(max); } @@ -8207,8 +8207,10 @@ static PyObject * os_sched_get_priority_min_impl(PyObject *module, int policy) /*[clinic end generated code: output=7595c1138cc47a6d input=21bc8fa0d70983bf]*/ { + /* make sure that errno is cleared before the call */ + errno = 0; int min = sched_get_priority_min(policy); - if (min < 0) + if (min == -1 && errno) return posix_error(); return PyLong_FromLong(min); } -- 2.47.3