[Python-checkins] gh-92839: fixed typo in _bisectmodule.c (line 131) (GH-92849) (#93321)

rhettinger webhook-mailer at python.org
Sat May 28 14:48:33 EDT 2022


https://github.com/python/cpython/commit/550c44b89513ea96d209e2ff761302238715f082
commit: 550c44b89513ea96d209e2ff761302238715f082
branch: 3.10
author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com>
committer: rhettinger <rhettinger at users.noreply.github.com>
date: 2022-05-28T13:48:25-05:00
summary:

gh-92839: fixed typo in _bisectmodule.c (line 131) (GH-92849) (#93321)

files:
A Misc/NEWS.d/next/Library/2022-05-16-14-35-39.gh-issue-92839.owSMyo.rst
M Lib/test/test_bisect.py
M Modules/_bisectmodule.c

diff --git a/Lib/test/test_bisect.py b/Lib/test/test_bisect.py
index 20f8b9d7c0aa8..ba108221ebf45 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 0000000000000..b425bd9c47bc9
--- /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 26c4b9bfb26b2..16f981e7296ba 100644
--- a/Modules/_bisectmodule.c
+++ b/Modules/_bisectmodule.c
@@ -118,7 +118,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);
@@ -245,7 +245,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);



More information about the Python-checkins mailing list