gh-126018: Avoid aborting due to unnecessary assert in `sys.audit` (#126020)

Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com>
Co-authored-by: Jelle Zijlstra <jelle.zijlstra@gmail.com>
This commit is contained in:
devdanzin 2024-10-27 11:41:42 -03:00 committed by GitHub
parent dc76a4ad3c
commit 80eec52fc8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 20 additions and 1 deletions

View File

@ -567,6 +567,17 @@ def test_winapi_createnamedpipe(pipe_name):
_winapi.CreateNamedPipe(pipe_name, _winapi.PIPE_ACCESS_DUPLEX, 8, 2, 0, 0, 0, 0)
def test_assert_unicode():
import sys
sys.addaudithook(lambda *args: None)
try:
sys.audit(9)
except TypeError:
pass
else:
raise RuntimeError("Expected sys.audit(9) to fail.")
if __name__ == "__main__":
from test.support import suppress_msvcrt_asserts

View File

@ -307,5 +307,12 @@ class AuditTest(unittest.TestCase):
self.assertEqual(actual, expected)
def test_assert_unicode(self):
# See gh-126018
returncode, _, stderr = self.run_python("test_assert_unicode")
if returncode:
self.fail(stderr)
if __name__ == "__main__":
unittest.main()

View File

@ -0,0 +1,2 @@
Fix a crash in :func:`sys.audit` when passing a non-string as first argument
and Python was compiled in debug mode.

View File

@ -519,7 +519,6 @@ sys_audit(PyObject *self, PyObject *const *args, Py_ssize_t argc)
}
assert(args[0] != NULL);
assert(PyUnicode_Check(args[0]));
if (!should_audit(tstate->interp)) {
Py_RETURN_NONE;