https://github.com/python/cpython/commit/398071871066548954f4c51e8250d13b7c9659e0
commit: 398071871066548954f4c51e8250d13b7c9659e0
branch: main
author: sobolevn <m...@sobolevn.me>
committer: sobolevn <m...@sobolevn.me>
date: 2025-04-07T14:59:44+03:00
summary:

gh-132171: Fix `_interpreters.run_string` crash on string subclass (#132173)

files:
A Misc/NEWS.d/next/Library/2025-04-06-23-09-21.gh-issue-132171.zZqvfn.rst
M Lib/test/test__interpreters.py
M Modules/_interpretersmodule.c

diff --git a/Lib/test/test__interpreters.py b/Lib/test/test__interpreters.py
index 7fba16bafbac37..ec376773e40f62 100644
--- a/Lib/test/test__interpreters.py
+++ b/Lib/test/test__interpreters.py
@@ -746,6 +746,12 @@ def test_bytes_for_script(self):
         with self.assertRaises(TypeError):
             _interpreters.run_string(self.id, b'print("spam")')
 
+    def test_str_subclass_string(self):
+        class StrSubclass(str): pass
+
+        output = _run_output(self.id, StrSubclass('print(1 + 2)'))
+        self.assertEqual(output, '3\n')
+
     def test_with_shared(self):
         r, w = os.pipe()
 
diff --git 
a/Misc/NEWS.d/next/Library/2025-04-06-23-09-21.gh-issue-132171.zZqvfn.rst 
b/Misc/NEWS.d/next/Library/2025-04-06-23-09-21.gh-issue-132171.zZqvfn.rst
new file mode 100644
index 00000000000000..89f34fa3168cae
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2025-04-06-23-09-21.gh-issue-132171.zZqvfn.rst
@@ -0,0 +1 @@
+Fix crash of ``_interpreters.run_string`` on string subclasses.
diff --git a/Modules/_interpretersmodule.c b/Modules/_interpretersmodule.c
index 6cbf026469b4b2..74f1c02cfab4c9 100644
--- a/Modules/_interpretersmodule.c
+++ b/Modules/_interpretersmodule.c
@@ -330,7 +330,7 @@ get_code_str(PyObject *arg, Py_ssize_t *len_p, PyObject 
**bytes_p, int *flags_p)
     int flags = 0;
 
     if (PyUnicode_Check(arg)) {
-        assert(PyUnicode_CheckExact(arg)
+        assert(PyUnicode_Check(arg)
                && (check_code_str((PyUnicodeObject *)arg) == NULL));
         codestr = PyUnicode_AsUTF8AndSize(arg, &len);
         if (codestr == NULL) {

_______________________________________________
Python-checkins mailing list -- python-checkins@python.org
To unsubscribe send an email to python-checkins-le...@python.org
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: arch...@mail-archive.com

Reply via email to