]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-101819: Remove _testcapi dependencies on specific _io symbols (#101918)
authorErlend E. Aasland <erlend.aasland@protonmail.com>
Wed, 15 Feb 2023 10:18:27 +0000 (11:18 +0100)
committerGitHub <noreply@github.com>
Wed, 15 Feb 2023 10:18:27 +0000 (11:18 +0100)
Modules/_io/_iomodule.c
Modules/_testcapimodule.c

index 175fa97479d27d8e07d950f3d85f321122dbd872..811b1d221a0122ce4f2edd92e908ff7468fa1dcb 100644 (file)
@@ -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;
         }
     }
 
index 3c411fa0d76358bdb48003b83b4e152466c5124e..5610a7689136f618c9b48505be654395398145dd 100644 (file)
@@ -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;
     }