[Python-checkins] gh-101819: Remove _testcapi dependencies on specific _io symbols (#101918)

erlend-aasland webhook-mailer at python.org
Wed Feb 15 05:18:43 EST 2023


https://github.com/python/cpython/commit/e8b6aaad2faf11fe315410138a5c5943d610d8d8
commit: e8b6aaad2faf11fe315410138a5c5943d610d8d8
branch: main
author: Erlend E. Aasland <erlend.aasland at protonmail.com>
committer: erlend-aasland <erlend.aasland at protonmail.com>
date: 2023-02-15T11:18:27+01:00
summary:

gh-101819: Remove _testcapi dependencies on specific _io symbols (#101918)

files:
M Modules/_io/_iomodule.c
M Modules/_testcapimodule.c

diff --git a/Modules/_io/_iomodule.c b/Modules/_io/_iomodule.c
index 175fa97479d2..811b1d221a01 100644
--- a/Modules/_io/_iomodule.c
+++ b/Modules/_io/_iomodule.c
@@ -720,16 +720,8 @@ PyInit__io(void)
     // Add types
     for (size_t i=0; i < Py_ARRAY_LENGTH(static_types); i++) {
         PyTypeObject *type = static_types[i];
-        // Private type not exposed in the _io module
-        if (type == &_PyBytesIOBuffer_Type) {
-            if (PyType_Ready(type) < 0) {
-                goto fail;
-            }
-        }
-        else {
-            if (PyModule_AddType(m, type) < 0) {
-                goto fail;
-            }
+        if (PyModule_AddType(m, type) < 0) {
+            goto fail;
         }
     }
 
diff --git a/Modules/_testcapimodule.c b/Modules/_testcapimodule.c
index 3c411fa0d763..5610a7689136 100644
--- a/Modules/_testcapimodule.c
+++ b/Modules/_testcapimodule.c
@@ -1448,12 +1448,10 @@ test_from_contiguous(PyObject* self, PyObject *Py_UNUSED(ignored))
 }
 
 #if (defined(__linux__) || defined(__FreeBSD__)) && defined(__GNUC__)
-extern PyTypeObject _PyBytesIOBuffer_Type;
 
 static PyObject *
 test_pep3118_obsolete_write_locks(PyObject* self, PyObject *Py_UNUSED(ignored))
 {
-    PyTypeObject *type = &_PyBytesIOBuffer_Type;
     PyObject *b;
     char *dummy[1];
     int ret, match;
@@ -1466,7 +1464,13 @@ test_pep3118_obsolete_write_locks(PyObject* self, PyObject *Py_UNUSED(ignored))
         goto error;
 
     /* bytesiobuf_getbuffer() */
+    PyTypeObject *type = (PyTypeObject *)_PyImport_GetModuleAttrString(
+            "_io", "_BytesIOBuffer");
+    if (type == NULL) {
+        return NULL;
+    }
     b = type->tp_alloc(type, 0);
+    Py_DECREF(type);
     if (b == NULL) {
         return NULL;
     }



More information about the Python-checkins mailing list