From de9587bad799165c4ddd7255a66b0374808dd88c Mon Sep 17 00:00:00 2001 From: Dong-hee Na Date: Mon, 23 Mar 2020 23:45:21 +0900 Subject: [PATCH 01/16] bpo-40024: Update blake2module to use PyModule_AddType --- Modules/_blake2/blake2module.c | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/Modules/_blake2/blake2module.c b/Modules/_blake2/blake2module.c index 9d280a9ccd5f32..ff142c9f3ed330 100644 --- a/Modules/_blake2/blake2module.c +++ b/Modules/_blake2/blake2module.c @@ -63,13 +63,10 @@ PyInit__blake2(void) /* BLAKE2b */ Py_SET_TYPE(&PyBlake2_BLAKE2bType, &PyType_Type); - if (PyType_Ready(&PyBlake2_BLAKE2bType) < 0) { + if (PyModule_AddType(m, &PyBlake2_BLAKE2bType) < 0) { return NULL; } - Py_INCREF(&PyBlake2_BLAKE2bType); - PyModule_AddObject(m, "blake2b", (PyObject *)&PyBlake2_BLAKE2bType); - d = PyBlake2_BLAKE2bType.tp_dict; ADD_INT(d, "SALT_SIZE", BLAKE2B_SALTBYTES); ADD_INT(d, "PERSON_SIZE", BLAKE2B_PERSONALBYTES); @@ -83,13 +80,10 @@ PyInit__blake2(void) /* BLAKE2s */ Py_SET_TYPE(&PyBlake2_BLAKE2sType, &PyType_Type); - if (PyType_Ready(&PyBlake2_BLAKE2sType) < 0) { + if (PyModule_AddType(m, &PyBlake2_BLAKE2sType) < 0) { return NULL; } - Py_INCREF(&PyBlake2_BLAKE2sType); - PyModule_AddObject(m, "blake2s", (PyObject *)&PyBlake2_BLAKE2sType); - d = PyBlake2_BLAKE2sType.tp_dict; ADD_INT(d, "SALT_SIZE", BLAKE2S_SALTBYTES); ADD_INT(d, "PERSON_SIZE", BLAKE2S_PERSONALBYTES); From af8c626091b0c5de499c2900227a3a210d94ec68 Mon Sep 17 00:00:00 2001 From: Dong-hee Na Date: Tue, 24 Mar 2020 01:00:35 +0900 Subject: [PATCH 02/16] bpo-40024: Update _queuemodule to use PyModule_AddType --- Modules/_queuemodule.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/Modules/_queuemodule.c b/Modules/_queuemodule.c index e033da50a5ee3b..5eef06252cd326 100644 --- a/Modules/_queuemodule.c +++ b/Modules/_queuemodule.c @@ -390,11 +390,9 @@ PyInit__queue(void) if (PyModule_AddObject(m, "Empty", EmptyError) < 0) return NULL; - if (PyType_Ready(&PySimpleQueueType) < 0) - return NULL; - Py_INCREF(&PySimpleQueueType); - if (PyModule_AddObject(m, "SimpleQueue", (PyObject *)&PySimpleQueueType) < 0) + if (PyModule_AddType(m, &PySimpleQueueType) < 0) { return NULL; + } return m; } From bc76064e263f2bcdfcbb3940c2b8a831b24bda2f Mon Sep 17 00:00:00 2001 From: Dong-hee Na Date: Tue, 24 Mar 2020 01:03:05 +0900 Subject: [PATCH 03/16] bpo-40024: Update _bz2module to use PyModule_AddType --- Modules/_bz2module.c | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/Modules/_bz2module.c b/Modules/_bz2module.c index fe5880989873e7..008aef0555f4fd 100644 --- a/Modules/_bz2module.c +++ b/Modules/_bz2module.c @@ -731,24 +731,11 @@ static PyTypeObject BZ2Decompressor_Type = { static int _bz2_exec(PyObject *module) { - if (PyType_Ready(&BZ2Compressor_Type) < 0) { - return -1; - } - if (PyType_Ready(&BZ2Decompressor_Type) < 0) { - return -1; - } - - Py_INCREF(&BZ2Compressor_Type); - if (PyModule_AddObject(module, "BZ2Compressor", - (PyObject *)&BZ2Compressor_Type) < 0) { - Py_DECREF(&BZ2Compressor_Type); + if (PyModule_AddType(module, &BZ2Compressor_Type) < 0) { return -1; } - Py_INCREF(&BZ2Decompressor_Type); - if (PyModule_AddObject(module, "BZ2Decompressor", - (PyObject *)&BZ2Decompressor_Type) < 0) { - Py_INCREF(&BZ2Decompressor_Type); + if (PyModule_AddType(module, &BZ2Decompressor_Type) < 0) { return -1; } From f05f7f20c6756672a9163440b43a1d519164defe Mon Sep 17 00:00:00 2001 From: Dong-hee Na Date: Tue, 24 Mar 2020 01:17:30 +0900 Subject: [PATCH 04/16] bpo-40024: Update _operator to use PyModule_AddType. --- Modules/_operator.c | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/Modules/_operator.c b/Modules/_operator.c index adee5fd79689d4..49cdae530fab5c 100644 --- a/Modules/_operator.c +++ b/Modules/_operator.c @@ -1771,19 +1771,17 @@ PyInit__operator(void) if (m == NULL) return NULL; - if (PyType_Ready(&itemgetter_type) < 0) + if (PyModule_AddType(m, &itemgetter_type) < 0) { return NULL; - Py_INCREF(&itemgetter_type); - PyModule_AddObject(m, "itemgetter", (PyObject *)&itemgetter_type); + } - if (PyType_Ready(&attrgetter_type) < 0) + if (PyModule_AddType(m, &attrgetter_type) < 0) { return NULL; - Py_INCREF(&attrgetter_type); - PyModule_AddObject(m, "attrgetter", (PyObject *)&attrgetter_type); + } - if (PyType_Ready(&methodcaller_type) < 0) + if (PyModule_AddType(m, &methodcaller_type) < 0) { return NULL; - Py_INCREF(&methodcaller_type); - PyModule_AddObject(m, "methodcaller", (PyObject *)&methodcaller_type); + } + return m; } From 473c693073dc31837a7bcd60c3a0e3efc2848435 Mon Sep 17 00:00:00 2001 From: Dong-hee Na Date: Tue, 24 Mar 2020 01:19:43 +0900 Subject: [PATCH 05/16] bpo-40024: Update _csv.c to use PyModule_AddType. --- Modules/_csv.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/Modules/_csv.c b/Modules/_csv.c index 968a3d0c7f854f..9c497154ffb5c8 100644 --- a/Modules/_csv.c +++ b/Modules/_csv.c @@ -1633,9 +1633,6 @@ PyInit__csv(void) PyObject *module; const StyleDesc *style; - if (PyType_Ready(&Dialect_Type) < 0) - return NULL; - if (PyType_Ready(&Reader_Type) < 0) return NULL; @@ -1671,10 +1668,9 @@ PyInit__csv(void) return NULL; } - /* Add the Dialect type */ - Py_INCREF(&Dialect_Type); - if (PyModule_AddObject(module, "Dialect", (PyObject *)&Dialect_Type)) + if (PyModule_AddType(module, &Dialect_Type)) { return NULL; + } /* Add the CSV exception object to the module. */ get_csv_state(module)->error_obj = PyErr_NewException("_csv.Error", NULL, NULL); From 08bbe869a158ed3b362cb3c0968fed594e14f76d Mon Sep 17 00:00:00 2001 From: Dong-hee Na Date: Tue, 24 Mar 2020 01:25:44 +0900 Subject: [PATCH 06/16] bpo-40024: Update _asynciomodule to use PyModule_AddType. --- Modules/_asynciomodule.c | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/Modules/_asynciomodule.c b/Modules/_asynciomodule.c index d394002c06579e..22a1979f1bcf23 100644 --- a/Modules/_asynciomodule.c +++ b/Modules/_asynciomodule.c @@ -3391,9 +3391,6 @@ PyInit__asyncio(void) if (module_init() < 0) { return NULL; } - if (PyType_Ready(&FutureType) < 0) { - return NULL; - } if (PyType_Ready(&FutureIterType) < 0) { return NULL; } @@ -3403,9 +3400,6 @@ PyInit__asyncio(void) if (PyType_Ready(&TaskWakeupMethWrapper_Type) < 0) { return NULL; } - if (PyType_Ready(&TaskType) < 0) { - return NULL; - } if (PyType_Ready(&PyRunningLoopHolder_Type) < 0) { return NULL; } @@ -3415,16 +3409,12 @@ PyInit__asyncio(void) return NULL; } - Py_INCREF(&FutureType); - if (PyModule_AddObject(m, "Future", (PyObject *)&FutureType) < 0) { - Py_DECREF(&FutureType); + if (PyModule_AddType(m, &FutureType) < 0) { Py_DECREF(m); return NULL; } - Py_INCREF(&TaskType); - if (PyModule_AddObject(m, "Task", (PyObject *)&TaskType) < 0) { - Py_DECREF(&TaskType); + if (PyModule_AddType(m, &TaskType) < 0) { Py_DECREF(m); return NULL; } From 31f441a7cead124b90ca6b6a147d29c5c935f39f Mon Sep 17 00:00:00 2001 From: Dong-hee Na Date: Tue, 24 Mar 2020 01:30:51 +0900 Subject: [PATCH 07/16] bpo-40024: Update multibytecodec to use PyModule_AddType. --- Modules/cjkcodecs/multibytecodec.c | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/Modules/cjkcodecs/multibytecodec.c b/Modules/cjkcodecs/multibytecodec.c index 3bc07b2d8d5ae4..9f76da822dfdf5 100644 --- a/Modules/cjkcodecs/multibytecodec.c +++ b/Modules/cjkcodecs/multibytecodec.c @@ -2059,14 +2059,12 @@ static struct PyModuleDef _multibytecodecmodule = { PyMODINIT_FUNC PyInit__multibytecodec(void) { - int i; PyObject *m; PyTypeObject *typelist[] = { &MultibyteIncrementalEncoder_Type, &MultibyteIncrementalDecoder_Type, &MultibyteStreamReader_Type, - &MultibyteStreamWriter_Type, - NULL + &MultibyteStreamWriter_Type }; if (PyType_Ready(&MultibyteCodec_Type) < 0) @@ -2076,12 +2074,11 @@ PyInit__multibytecodec(void) if (m == NULL) return NULL; - for (i = 0; typelist[i] != NULL; i++) { - if (PyType_Ready(typelist[i]) < 0) + for (size_t i = 0; i < Py_ARRAY_LENGTH(typelist); i++) { + if (PyModule_AddType(m, typelist[i]) < 0) { + Py_DECREF(m); return NULL; - Py_INCREF(typelist[i]); - PyModule_AddObject(m, typelist[i]->tp_name, - (PyObject *)typelist[i]); + } } if (PyErr_Occurred()) { From e86a22537a3cd3b0d5b200849b59e05ed5d5b653 Mon Sep 17 00:00:00 2001 From: Dong-hee Na Date: Tue, 24 Mar 2020 01:47:47 +0900 Subject: [PATCH 08/16] bpo-40024: Update _datetimemodule to use PyModule_AddType. --- Modules/_datetimemodule.c | 48 +++++++++++++++++++-------------------- 1 file changed, 23 insertions(+), 25 deletions(-) diff --git a/Modules/_datetimemodule.c b/Modules/_datetimemodule.c index 4c985b37385e82..bc4bd93404eb73 100644 --- a/Modules/_datetimemodule.c +++ b/Modules/_datetimemodule.c @@ -6386,18 +6386,35 @@ PyInit__datetime(void) if (m == NULL) return NULL; - if (PyType_Ready(&PyDateTime_DateType) < 0) + if (PyModule_AddType(m, &PyDateTime_DateType) < 0) { + Py_DECREF(m); return NULL; - if (PyType_Ready(&PyDateTime_DateTimeType) < 0) + } + + if (PyModule_AddType(m, &PyDateTime_DateTimeType) < 0) { + Py_DECREF(m); return NULL; - if (PyType_Ready(&PyDateTime_DeltaType) < 0) + } + + if (PyModule_AddType(m, &PyDateTime_TimeType) < 0) { + Py_DECREF(m); return NULL; - if (PyType_Ready(&PyDateTime_TimeType) < 0) + } + + if (PyModule_AddType(m, &PyDateTime_DeltaType) < 0) { + Py_DECREF(m); return NULL; - if (PyType_Ready(&PyDateTime_TZInfoType) < 0) + } + + if (PyModule_AddType(m, &PyDateTime_TZInfoType) < 0) { + Py_DECREF(m); return NULL; - if (PyType_Ready(&PyDateTime_TimeZoneType) < 0) + } + + if (PyModule_AddType(m, &PyDateTime_TimeZoneType) < 0) { + Py_DECREF(m); return NULL; + } /* timedelta values */ d = PyDateTime_DeltaType.tp_dict; @@ -6515,25 +6532,6 @@ PyInit__datetime(void) PyModule_AddIntMacro(m, MINYEAR); PyModule_AddIntMacro(m, MAXYEAR); - Py_INCREF(&PyDateTime_DateType); - PyModule_AddObject(m, "date", (PyObject *) &PyDateTime_DateType); - - Py_INCREF(&PyDateTime_DateTimeType); - PyModule_AddObject(m, "datetime", - (PyObject *)&PyDateTime_DateTimeType); - - Py_INCREF(&PyDateTime_TimeType); - PyModule_AddObject(m, "time", (PyObject *) &PyDateTime_TimeType); - - Py_INCREF(&PyDateTime_DeltaType); - PyModule_AddObject(m, "timedelta", (PyObject *) &PyDateTime_DeltaType); - - Py_INCREF(&PyDateTime_TZInfoType); - PyModule_AddObject(m, "tzinfo", (PyObject *) &PyDateTime_TZInfoType); - - Py_INCREF(&PyDateTime_TimeZoneType); - PyModule_AddObject(m, "timezone", (PyObject *) &PyDateTime_TimeZoneType); - x = PyCapsule_New(&CAPI, PyDateTime_CAPSULE_NAME, NULL); if (x == NULL) return NULL; From 2f594687cbfa691c3633711c052960eb572c8888 Mon Sep 17 00:00:00 2001 From: Dong-hee Na Date: Tue, 24 Mar 2020 01:54:43 +0900 Subject: [PATCH 09/16] bpo-40024: Update _pickle.c to use PyModule_AddType. --- Modules/_pickle.c | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/Modules/_pickle.c b/Modules/_pickle.c index 6b903da8150d6f..c3385ad3b9ec6a 100644 --- a/Modules/_pickle.c +++ b/Modules/_pickle.c @@ -7993,10 +7993,6 @@ PyInit__pickle(void) return m; } - if (PyType_Ready(&Unpickler_Type) < 0) - return NULL; - if (PyType_Ready(&Pickler_Type) < 0) - return NULL; if (PyType_Ready(&Pdata_Type) < 0) return NULL; if (PyType_Ready(&PicklerMemoProxyType) < 0) @@ -8010,16 +8006,15 @@ PyInit__pickle(void) return NULL; /* Add types */ - Py_INCREF(&Pickler_Type); - if (PyModule_AddObject(m, "Pickler", (PyObject *)&Pickler_Type) < 0) + if (PyModule_AddType(m, &Pickler_Type) < 0) { return NULL; - Py_INCREF(&Unpickler_Type); - if (PyModule_AddObject(m, "Unpickler", (PyObject *)&Unpickler_Type) < 0) + } + if (PyModule_AddType(m, &Unpickler_Type) < 0) { return NULL; - Py_INCREF(&PyPickleBuffer_Type); - if (PyModule_AddObject(m, "PickleBuffer", - (PyObject *)&PyPickleBuffer_Type) < 0) + } + if (PyModule_AddType(m, &PyPickleBuffer_Type) < 0) { return NULL; + } st = _Pickle_GetState(m); From f4bf212ecd95f2ea928296647100cd6b0ce7e636 Mon Sep 17 00:00:00 2001 From: Dong-hee Na Date: Tue, 24 Mar 2020 01:55:30 +0900 Subject: [PATCH 10/16] bpo-40024: Update overlapped.c to use PyModule_AddType. --- Modules/overlapped.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/Modules/overlapped.c b/Modules/overlapped.c index 52ed0bc284bcc0..e8029e72f90c7c 100644 --- a/Modules/overlapped.c +++ b/Modules/overlapped.c @@ -1860,12 +1860,10 @@ PyInit__overlapped(void) if (initialize_function_pointers() < 0) return NULL; - if (PyType_Ready(&OverlappedType) < 0) - return NULL; - m = PyModule_Create(&overlapped_module); - if (PyModule_AddObject(m, "Overlapped", (PyObject *)&OverlappedType) < 0) + if (PyModule_AddType(m, &OverlappedType) < 0) { return NULL; + } d = PyModule_GetDict(m); From 2ac5a8545b5bdcacded72b9a37a5c1d73925ab6a Mon Sep 17 00:00:00 2001 From: Dong-hee Na Date: Tue, 24 Mar 2020 10:57:46 +0900 Subject: [PATCH 11/16] bpo-40024: Update _datetimemoudle for codereview. --- Modules/_datetimemodule.c | 39 ++++++++++++--------------------------- 1 file changed, 12 insertions(+), 27 deletions(-) diff --git a/Modules/_datetimemodule.c b/Modules/_datetimemodule.c index bc4bd93404eb73..f7c1b69def3e77 100644 --- a/Modules/_datetimemodule.c +++ b/Modules/_datetimemodule.c @@ -6386,34 +6386,19 @@ PyInit__datetime(void) if (m == NULL) return NULL; - if (PyModule_AddType(m, &PyDateTime_DateType) < 0) { - Py_DECREF(m); - return NULL; - } - - if (PyModule_AddType(m, &PyDateTime_DateTimeType) < 0) { - Py_DECREF(m); - return NULL; - } - - if (PyModule_AddType(m, &PyDateTime_TimeType) < 0) { - Py_DECREF(m); - return NULL; - } - - if (PyModule_AddType(m, &PyDateTime_DeltaType) < 0) { - Py_DECREF(m); - return NULL; - } - - if (PyModule_AddType(m, &PyDateTime_TZInfoType) < 0) { - Py_DECREF(m); - return NULL; - } + PyTypeObject *types[] = { + &PyDateTime_DateType, + &PyDateTime_DateTimeType, + &PyDateTime_TimeType, + &PyDateTime_DeltaType, + &PyDateTime_TZInfoType, + &PyDateTime_TimeZoneType + }; - if (PyModule_AddType(m, &PyDateTime_TimeZoneType) < 0) { - Py_DECREF(m); - return NULL; + for (size_t i = 0; i < Py_ARRAY_LENGTH(types); i++) { + if (PyModule_AddType(m, types[i]) < 0) { + return NULL; + } } /* timedelta values */ From 525ede580dbc11815f22f2bf6d1993b54deeef5d Mon Sep 17 00:00:00 2001 From: Dong-hee Na Date: Tue, 24 Mar 2020 11:45:53 +0900 Subject: [PATCH 12/16] bpo-40024: Update multibytecodec.c --- Modules/cjkcodecs/multibytecodec.c | 1 - 1 file changed, 1 deletion(-) diff --git a/Modules/cjkcodecs/multibytecodec.c b/Modules/cjkcodecs/multibytecodec.c index 9f76da822dfdf5..a09c75d4ffac7e 100644 --- a/Modules/cjkcodecs/multibytecodec.c +++ b/Modules/cjkcodecs/multibytecodec.c @@ -2076,7 +2076,6 @@ PyInit__multibytecodec(void) for (size_t i = 0; i < Py_ARRAY_LENGTH(typelist); i++) { if (PyModule_AddType(m, typelist[i]) < 0) { - Py_DECREF(m); return NULL; } } From ee0343ffbdafadc8de30160506c7501eec8ba40a Mon Sep 17 00:00:00 2001 From: Dong-hee Na Date: Tue, 24 Mar 2020 11:48:56 +0900 Subject: [PATCH 13/16] bpo-40024: Update _operator.c --- Modules/_operator.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/Modules/_operator.c b/Modules/_operator.c index 49cdae530fab5c..9c54aac0583f4a 100644 --- a/Modules/_operator.c +++ b/Modules/_operator.c @@ -1771,16 +1771,16 @@ PyInit__operator(void) if (m == NULL) return NULL; - if (PyModule_AddType(m, &itemgetter_type) < 0) { - return NULL; - } - - if (PyModule_AddType(m, &attrgetter_type) < 0) { - return NULL; - } - - if (PyModule_AddType(m, &methodcaller_type) < 0) { - return NULL; + PyTypeObject *types[] = { + &itemgetter_type, + &attrgetter_type, + &methodcaller_type + }; + + for (size_t i = 0; i < Py_ARRAY_LENGTH(types); i++) { + if (PyModule_AddType(m, types[i]) < 0) { + return NULL; + } } return m; From 839e4e9b9d2266cea7d3d736e2054439d90736f7 Mon Sep 17 00:00:00 2001 From: Dong-hee Na Date: Wed, 25 Mar 2020 03:07:25 +0900 Subject: [PATCH 14/16] bpo-40024: Update _asynciomodule --- Modules/_asynciomodule.c | 1 + 1 file changed, 1 insertion(+) diff --git a/Modules/_asynciomodule.c b/Modules/_asynciomodule.c index 22a1979f1bcf23..fa94a65f1cea8f 100644 --- a/Modules/_asynciomodule.c +++ b/Modules/_asynciomodule.c @@ -3409,6 +3409,7 @@ PyInit__asyncio(void) return NULL; } + /* FutureType and TaskType are made ready by PyModule_AddType() calls below. */ if (PyModule_AddType(m, &FutureType) < 0) { Py_DECREF(m); return NULL; From 95ea6875139be1ffd4d54fdc61a1cfa2113493f9 Mon Sep 17 00:00:00 2001 From: Dong-hee Na Date: Wed, 25 Mar 2020 03:18:17 +0900 Subject: [PATCH 15/16] bpo-40024: Update macro of _iomodule to use PyModule_AddType. --- Modules/_io/_iomodule.c | 36 ++++++++++++++++-------------------- 1 file changed, 16 insertions(+), 20 deletions(-) diff --git a/Modules/_io/_iomodule.c b/Modules/_io/_iomodule.c index 5ceae62f57a849..e880992070d0de 100644 --- a/Modules/_io/_iomodule.c +++ b/Modules/_io/_iomodule.c @@ -684,12 +684,8 @@ PyInit__io(void) state = get_io_state(m); state->initialized = 0; -#define ADD_TYPE(type, name) \ - if (PyType_Ready(type) < 0) \ - goto fail; \ - Py_INCREF(type); \ - if (PyModule_AddObject(m, name, (PyObject *)type) < 0) { \ - Py_DECREF(type); \ +#define ADD_TYPE(type) \ + if (PyModule_AddType(m, type) < 0) { \ goto fail; \ } @@ -717,54 +713,54 @@ PyInit__io(void) /* Concrete base types of the IO ABCs. (the ABCs themselves are declared through inheritance in io.py) */ - ADD_TYPE(&PyIOBase_Type, "_IOBase"); - ADD_TYPE(&PyRawIOBase_Type, "_RawIOBase"); - ADD_TYPE(&PyBufferedIOBase_Type, "_BufferedIOBase"); - ADD_TYPE(&PyTextIOBase_Type, "_TextIOBase"); + ADD_TYPE(&PyIOBase_Type); + ADD_TYPE(&PyRawIOBase_Type); + ADD_TYPE(&PyBufferedIOBase_Type); + ADD_TYPE(&PyTextIOBase_Type); /* Implementation of concrete IO objects. */ /* FileIO */ PyFileIO_Type.tp_base = &PyRawIOBase_Type; - ADD_TYPE(&PyFileIO_Type, "FileIO"); + ADD_TYPE(&PyFileIO_Type); /* BytesIO */ PyBytesIO_Type.tp_base = &PyBufferedIOBase_Type; - ADD_TYPE(&PyBytesIO_Type, "BytesIO"); + ADD_TYPE(&PyBytesIO_Type); if (PyType_Ready(&_PyBytesIOBuffer_Type) < 0) goto fail; /* StringIO */ PyStringIO_Type.tp_base = &PyTextIOBase_Type; - ADD_TYPE(&PyStringIO_Type, "StringIO"); + ADD_TYPE(&PyStringIO_Type); #ifdef MS_WINDOWS /* WindowsConsoleIO */ PyWindowsConsoleIO_Type.tp_base = &PyRawIOBase_Type; - ADD_TYPE(&PyWindowsConsoleIO_Type, "_WindowsConsoleIO"); + ADD_TYPE(&PyWindowsConsoleIO_Type); #endif /* BufferedReader */ PyBufferedReader_Type.tp_base = &PyBufferedIOBase_Type; - ADD_TYPE(&PyBufferedReader_Type, "BufferedReader"); + ADD_TYPE(&PyBufferedReader_Type); /* BufferedWriter */ PyBufferedWriter_Type.tp_base = &PyBufferedIOBase_Type; - ADD_TYPE(&PyBufferedWriter_Type, "BufferedWriter"); + ADD_TYPE(&PyBufferedWriter_Type); /* BufferedRWPair */ PyBufferedRWPair_Type.tp_base = &PyBufferedIOBase_Type; - ADD_TYPE(&PyBufferedRWPair_Type, "BufferedRWPair"); + ADD_TYPE(&PyBufferedRWPair_Type); /* BufferedRandom */ PyBufferedRandom_Type.tp_base = &PyBufferedIOBase_Type; - ADD_TYPE(&PyBufferedRandom_Type, "BufferedRandom"); + ADD_TYPE(&PyBufferedRandom_Type); /* TextIOWrapper */ PyTextIOWrapper_Type.tp_base = &PyTextIOBase_Type; - ADD_TYPE(&PyTextIOWrapper_Type, "TextIOWrapper"); + ADD_TYPE(&PyTextIOWrapper_Type); /* IncrementalNewlineDecoder */ - ADD_TYPE(&PyIncrementalNewlineDecoder_Type, "IncrementalNewlineDecoder"); + ADD_TYPE(&PyIncrementalNewlineDecoder_Type); /* Interned strings */ #define ADD_INTERNED(name) \ From ff64806d613587ac152fa1d7014170916b55d02c Mon Sep 17 00:00:00 2001 From: Dong-hee Na Date: Wed, 25 Mar 2020 04:05:44 +0900 Subject: [PATCH 16/16] bpo-40024: Update _cursesmodule to use PyModule_AddType. --- Modules/_cursesmodule.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Modules/_cursesmodule.c b/Modules/_cursesmodule.c index ee33107ed62224..3d16af7f0a34f6 100644 --- a/Modules/_cursesmodule.c +++ b/Modules/_cursesmodule.c @@ -4740,7 +4740,8 @@ PyInit__curses(void) SetDictInt("KEY_MAX", KEY_MAX); } - Py_INCREF(&PyCursesWindow_Type); - PyModule_AddObject(m, "window", (PyObject *)&PyCursesWindow_Type); + if (PyModule_AddType(m, &PyCursesWindow_Type) < 0) { + return NULL; + } return m; }