]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.12] gh-130824: Add tests for NULL in PyLong_*AndOverflow functions (GH-130828...
authorPetr Viktorin <encukou@gmail.com>
Wed, 5 Mar 2025 11:52:40 +0000 (12:52 +0100)
committerGitHub <noreply@github.com>
Wed, 5 Mar 2025 11:52:40 +0000 (13:52 +0200)
(cherry picked from commit 90130807d9c5a55b2a64024f5dfbee4785b9a27c)

Co-authored-by: Peter Bierma <zintensitydev@gmail.com>
Co-authored-by: Sergey B Kirpichev <skirpichev@gmail.com>
Lib/test/test_capi/test_long.py
Modules/_testcapi/long.c

index 18507ed7c3bfec5d09afad1f6818f21ab1b5bae7..05b3a7ebd63d648f595d53c973ae0d2ac4f067d5 100644 (file)
@@ -208,9 +208,8 @@ class LongTests(unittest.TestCase):
 
         self.assertEqual(func(min_val - 1), (-1, -1))
         self.assertEqual(func(max_val + 1), (-1, +1))
-
-        # CRASHES func(1.0)
-        # CRASHES func(NULL)
+        self.assertRaises(SystemError, func, None)
+        self.assertRaises(TypeError, func, 1.0)
 
     def test_long_aslong(self):
         # Test PyLong_AsLong() and PyLong_FromLong()
index 9c5a0e386759e7339532218811c0f3542b716341..16eb437ffea1782a3a400993555ccbae235ee515 100644 (file)
@@ -629,7 +629,7 @@ pylong_aslongandoverflow(PyObject *module, PyObject *arg)
     int overflow = UNINITIALIZED_INT;
     long value = PyLong_AsLongAndOverflow(arg, &overflow);
     if (value == -1 && PyErr_Occurred()) {
-        assert(overflow == -1);
+        assert(overflow == 0);
         return NULL;
     }
     return Py_BuildValue("li", value, overflow);
@@ -675,7 +675,7 @@ pylong_aslonglongandoverflow(PyObject *module, PyObject *arg)
     int overflow = UNINITIALIZED_INT;
     long long value = PyLong_AsLongLongAndOverflow(arg, &overflow);
     if (value == -1 && PyErr_Occurred()) {
-        assert(overflow == -1);
+        assert(overflow == 0);
         return NULL;
     }
     return Py_BuildValue("Li", value, overflow);