From cc28d98cbbce96743fa3a978bd571f198eeee77a Mon Sep 17 00:00:00 2001 From: oda-gitso <105083118+oda-gitso@users.noreply.github.com> Date: Sun, 29 May 2022 01:08:06 +0700 Subject: [PATCH] gh-92839: fixed typo in _bisectmodule.c (line 131) (GH-92849) (cherry picked from commit 7fa9b7daa5a8bb5760724ac2d94f5298c60dc905) Co-authored-by: oda-gitso <105083118+oda-gitso@users.noreply.github.com> --- Lib/test/test_bisect.py | 6 ++++++ .../Library/2022-05-16-14-35-39.gh-issue-92839.owSMyo.rst | 1 + Modules/_bisectmodule.c | 4 ++-- 3 files changed, 9 insertions(+), 2 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2022-05-16-14-35-39.gh-issue-92839.owSMyo.rst diff --git a/Lib/test/test_bisect.py b/Lib/test/test_bisect.py index 20f8b9d7c0aa87..ba108221ebf454 100644 --- a/Lib/test/test_bisect.py +++ b/Lib/test/test_bisect.py @@ -257,6 +257,12 @@ def test_insort(self): target ) + def test_insort_keynotNone(self): + x = [] + y = {"a": 2, "b": 1} + for f in (self.module.insort_left, self.module.insort_right): + self.assertRaises(TypeError, f, x, y, key = "b") + class TestBisectPython(TestBisect, unittest.TestCase): module = py_bisect diff --git a/Misc/NEWS.d/next/Library/2022-05-16-14-35-39.gh-issue-92839.owSMyo.rst b/Misc/NEWS.d/next/Library/2022-05-16-14-35-39.gh-issue-92839.owSMyo.rst new file mode 100644 index 00000000000000..b425bd9c47bc91 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2022-05-16-14-35-39.gh-issue-92839.owSMyo.rst @@ -0,0 +1 @@ +Fixed crash resulting from calling bisect.insort() or bisect.insort_left() with the key argument not equal to None. diff --git a/Modules/_bisectmodule.c b/Modules/_bisectmodule.c index 19e9cd2d46f109..0caa92b2dc6e02 100644 --- a/Modules/_bisectmodule.c +++ b/Modules/_bisectmodule.c @@ -128,7 +128,7 @@ _bisect_insort_right_impl(PyObject *module, PyObject *a, PyObject *x, index = internal_bisect_right(a, x, lo, hi, key); } else { key_x = PyObject_CallOneArg(key, x); - if (x == NULL) { + if (key_x == NULL) { return NULL; } index = internal_bisect_right(a, key_x, lo, hi, key); @@ -256,7 +256,7 @@ _bisect_insort_left_impl(PyObject *module, PyObject *a, PyObject *x, index = internal_bisect_left(a, x, lo, hi, key); } else { key_x = PyObject_CallOneArg(key, x); - if (x == NULL) { + if (key_x == NULL) { return NULL; } index = internal_bisect_left(a, key_x, lo, hi, key);