From 21d549caf6a823d5bd93d1fbf386160d92ebdb38 Mon Sep 17 00:00:00 2001 From: Lee Dogeon Date: Sat, 14 Mar 2026 15:47:45 +0900 Subject: [PATCH] Handle chr() range checks without Rust integer overflow (#7422) --- Lib/test/test_builtin.py | 1 - crates/vm/src/stdlib/builtins.rs | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/Lib/test/test_builtin.py b/Lib/test/test_builtin.py index 9be8ed716..29047880f 100644 --- a/Lib/test/test_builtin.py +++ b/Lib/test/test_builtin.py @@ -367,7 +367,6 @@ class BuiltinTest(ComplexesAreIdenticalMixin, unittest.TestCase): c3 = C3() self.assertTrue(callable(c3)) - @unittest.expectedFailure # TODO: RUSTPYTHON; OverflowError: Python int too large to convert to Rust isize def test_chr(self): self.assertEqual(chr(0), '\0') self.assertEqual(chr(32), ' ') diff --git a/crates/vm/src/stdlib/builtins.rs b/crates/vm/src/stdlib/builtins.rs index c1f7943e8..a506f7746 100644 --- a/crates/vm/src/stdlib/builtins.rs +++ b/crates/vm/src/stdlib/builtins.rs @@ -88,7 +88,7 @@ mod builtins { #[pyfunction] fn chr(i: PyIntRef, vm: &VirtualMachine) -> PyResult { let value = i - .try_to_primitive::(vm)? + .as_bigint() .to_u32() .and_then(CodePoint::from_u32) .ok_or_else(|| vm.new_value_error("chr() arg not in range(0x110000)"))?;