gh-86493: Use PyModule_Add() instead of PyModule_AddObjectRef() (GH-106860)
This commit is contained in:
parent
40f3f11a77
commit
a293fa5915
@ -5740,15 +5740,9 @@ _ctypes_add_objects(PyObject *mod)
|
|||||||
{
|
{
|
||||||
#define MOD_ADD(name, expr) \
|
#define MOD_ADD(name, expr) \
|
||||||
do { \
|
do { \
|
||||||
PyObject *obj = (expr); \
|
if (PyModule_Add(mod, name, (expr)) < 0) { \
|
||||||
if (obj == NULL) { \
|
|
||||||
return -1; \
|
return -1; \
|
||||||
} \
|
} \
|
||||||
if (PyModule_AddObjectRef(mod, name, obj) < 0) { \
|
|
||||||
Py_DECREF(obj); \
|
|
||||||
return -1; \
|
|
||||||
} \
|
|
||||||
Py_DECREF(obj); \
|
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
MOD_ADD("_pointer_type_cache", Py_NewRef(_ctypes_ptrtype_cache));
|
MOD_ADD("_pointer_type_cache", Py_NewRef(_ctypes_ptrtype_cache));
|
||||||
|
@ -2189,7 +2189,6 @@ hashlib_init_constructors(PyObject *module)
|
|||||||
*/
|
*/
|
||||||
PyModuleDef *mdef;
|
PyModuleDef *mdef;
|
||||||
PyMethodDef *fdef;
|
PyMethodDef *fdef;
|
||||||
PyObject *proxy;
|
|
||||||
PyObject *func, *name_obj;
|
PyObject *func, *name_obj;
|
||||||
_hashlibstate *state = get_hashlib_state(module);
|
_hashlibstate *state = get_hashlib_state(module);
|
||||||
|
|
||||||
@ -2224,17 +2223,8 @@ hashlib_init_constructors(PyObject *module)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
proxy = PyDictProxy_New(state->constructs);
|
return PyModule_Add(module, "_constructors",
|
||||||
if (proxy == NULL) {
|
PyDictProxy_New(state->constructs));
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
int rc = PyModule_AddObjectRef(module, "_constructors", proxy);
|
|
||||||
Py_DECREF(proxy);
|
|
||||||
if (rc < 0) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
@ -1756,22 +1756,12 @@ static int
|
|||||||
_json_exec(PyObject *module)
|
_json_exec(PyObject *module)
|
||||||
{
|
{
|
||||||
PyObject *PyScannerType = PyType_FromSpec(&PyScannerType_spec);
|
PyObject *PyScannerType = PyType_FromSpec(&PyScannerType_spec);
|
||||||
if (PyScannerType == NULL) {
|
if (PyModule_Add(module, "make_scanner", PyScannerType) < 0) {
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
int rc = PyModule_AddObjectRef(module, "make_scanner", PyScannerType);
|
|
||||||
Py_DECREF(PyScannerType);
|
|
||||||
if (rc < 0) {
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
PyObject *PyEncoderType = PyType_FromSpec(&PyEncoderType_spec);
|
PyObject *PyEncoderType = PyType_FromSpec(&PyEncoderType_spec);
|
||||||
if (PyEncoderType == NULL) {
|
if (PyModule_Add(module, "make_encoder", PyEncoderType) < 0) {
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
rc = PyModule_AddObjectRef(module, "make_encoder", PyEncoderType);
|
|
||||||
Py_DECREF(PyEncoderType);
|
|
||||||
if (rc < 0) {
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3195,12 +3195,7 @@ do { \
|
|||||||
|
|
||||||
#define ADD_ULONG_CONSTANT(module, name, value) \
|
#define ADD_ULONG_CONSTANT(module, name, value) \
|
||||||
do { \
|
do { \
|
||||||
PyObject *o = PyLong_FromUnsignedLong(value); \
|
if (PyModule_Add(module, name, PyLong_FromUnsignedLong(value)) < 0) { \
|
||||||
if (!o) \
|
|
||||||
goto error; \
|
|
||||||
int res = PyModule_AddObjectRef(module, name, o); \
|
|
||||||
Py_DECREF(o); \
|
|
||||||
if (res < 0) { \
|
|
||||||
goto error; \
|
goto error; \
|
||||||
} \
|
} \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
@ -5773,13 +5773,7 @@ static int
|
|||||||
sslmodule_add_option(PyObject *m, const char *name, uint64_t value)
|
sslmodule_add_option(PyObject *m, const char *name, uint64_t value)
|
||||||
{
|
{
|
||||||
Py_BUILD_ASSERT(sizeof(unsigned long long) >= sizeof(value));
|
Py_BUILD_ASSERT(sizeof(unsigned long long) >= sizeof(value));
|
||||||
PyObject *obj = PyLong_FromUnsignedLongLong(value);
|
return PyModule_Add(m, name, PyLong_FromUnsignedLongLong(value));
|
||||||
if (obj == NULL) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
int res = PyModule_AddObjectRef(m, name, obj);
|
|
||||||
Py_DECREF(obj);
|
|
||||||
return res;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -692,13 +692,11 @@ _PyTestCapi_Init_Mem(PyObject *mod)
|
|||||||
|
|
||||||
PyObject *v;
|
PyObject *v;
|
||||||
#ifdef WITH_PYMALLOC
|
#ifdef WITH_PYMALLOC
|
||||||
v = Py_NewRef(Py_True);
|
v = Py_True;
|
||||||
#else
|
#else
|
||||||
v = Py_NewRef(Py_False);
|
v = Py_False;
|
||||||
#endif
|
#endif
|
||||||
int rc = PyModule_AddObjectRef(mod, "WITH_PYMALLOC", v);
|
if (PyModule_AddObjectRef(mod, "WITH_PYMALLOC", v) < 0) {
|
||||||
Py_DECREF(v);
|
|
||||||
if (rc < 0) {
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -516,13 +516,7 @@ static PyFunction_WatchCallback func_watcher_callbacks[NUM_TEST_FUNC_WATCHERS] =
|
|||||||
static int
|
static int
|
||||||
add_func_event(PyObject *module, const char *name, PyFunction_WatchEvent event)
|
add_func_event(PyObject *module, const char *name, PyFunction_WatchEvent event)
|
||||||
{
|
{
|
||||||
PyObject *value = PyLong_FromLong(event);
|
return PyModule_Add(module, name, PyLong_FromLong(event));
|
||||||
if (value == NULL) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
int ok = PyModule_AddObjectRef(module, name, value);
|
|
||||||
Py_DECREF(value);
|
|
||||||
return ok;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static PyObject *
|
static PyObject *
|
||||||
|
@ -137,13 +137,7 @@ init_module(PyObject *module, module_state *state)
|
|||||||
}
|
}
|
||||||
|
|
||||||
double d = _PyTime_AsSecondsDouble(state->initialized);
|
double d = _PyTime_AsSecondsDouble(state->initialized);
|
||||||
PyObject *initialized = PyFloat_FromDouble(d);
|
if (PyModule_Add(module, "_module_initialized", PyFloat_FromDouble(d)) < 0) {
|
||||||
if (initialized == NULL) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
int rc = PyModule_AddObjectRef(module, "_module_initialized", initialized);
|
|
||||||
Py_DECREF(initialized);
|
|
||||||
if (rc < 0) {
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1812,16 +1812,13 @@ add_errors_module(PyObject *mod)
|
|||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
int rc = PyModule_AddObjectRef(errors_module, "codes", codes_dict);
|
if (PyModule_Add(errors_module, "codes", codes_dict) < 0) {
|
||||||
Py_CLEAR(codes_dict);
|
Py_DECREF(rev_codes_dict);
|
||||||
if (rc < 0) {
|
return -1;
|
||||||
goto error;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
rc = PyModule_AddObjectRef(errors_module, "messages", rev_codes_dict);
|
if (PyModule_Add(errors_module, "messages", rev_codes_dict) < 0) {
|
||||||
Py_CLEAR(rev_codes_dict);
|
return -1;
|
||||||
if (rc < 0) {
|
|
||||||
goto error;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -7425,9 +7425,7 @@ socket_exec(PyObject *m)
|
|||||||
sock_free_api(capi);
|
sock_free_api(capi);
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
int rc = PyModule_AddObjectRef(m, PySocket_CAPI_NAME, capsule);
|
if (PyModule_Add(m, PySocket_CAPI_NAME, capsule) < 0) {
|
||||||
Py_DECREF(capsule);
|
|
||||||
if (rc < 0) {
|
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -8818,13 +8816,7 @@ socket_exec(PyObject *m)
|
|||||||
};
|
};
|
||||||
int i;
|
int i;
|
||||||
for (i = 0; i < Py_ARRAY_LENGTH(codes); ++i) {
|
for (i = 0; i < Py_ARRAY_LENGTH(codes); ++i) {
|
||||||
PyObject *tmp = PyLong_FromUnsignedLong(codes[i]);
|
if (PyModule_Add(m, names[i], PyLong_FromUnsignedLong(codes[i])) < 0) {
|
||||||
if (tmp == NULL) {
|
|
||||||
goto error;
|
|
||||||
}
|
|
||||||
int rc = PyModule_AddObjectRef(m, names[i], tmp);
|
|
||||||
Py_DECREF(tmp);
|
|
||||||
if (rc < 0) {
|
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1496,13 +1496,7 @@ unicodedata_exec(PyObject *module)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Export C API */
|
/* Export C API */
|
||||||
PyObject *capsule = unicodedata_create_capi();
|
if (PyModule_Add(module, "_ucnhash_CAPI", unicodedata_create_capi()) < 0) {
|
||||||
if (capsule == NULL) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
int rc = PyModule_AddObjectRef(module, "_ucnhash_CAPI", capsule);
|
|
||||||
Py_DECREF(capsule);
|
|
||||||
if (rc < 0) {
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -565,15 +565,9 @@ static struct PyMethodDef msvcrt_functions[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static int
|
static int
|
||||||
insertptr(PyObject *mod, char *name, void *value)
|
insertptr(PyObject *mod, const char *name, void *value)
|
||||||
{
|
{
|
||||||
PyObject *v = PyLong_FromVoidPtr(value);
|
return PyModule_Add(mod, name, PyLong_FromVoidPtr(value));
|
||||||
if (v == NULL) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
int rc = PyModule_AddObjectRef(mod, name, v);
|
|
||||||
Py_DECREF(v);
|
|
||||||
return rc;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#define INSERTINT(MOD, NAME, VAL) do { \
|
#define INSERTINT(MOD, NAME, VAL) do { \
|
||||||
@ -646,12 +640,7 @@ exec_module(PyObject* m)
|
|||||||
_VC_CRT_MINOR_VERSION,
|
_VC_CRT_MINOR_VERSION,
|
||||||
_VC_CRT_BUILD_VERSION,
|
_VC_CRT_BUILD_VERSION,
|
||||||
_VC_CRT_RBUILD_VERSION);
|
_VC_CRT_RBUILD_VERSION);
|
||||||
if (version == NULL) {
|
if (PyModule_Add(m, "CRT_ASSEMBLY_VERSION", version) < 0) {
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
int st = PyModule_AddObjectRef(m, "CRT_ASSEMBLY_VERSION", version);
|
|
||||||
Py_DECREF(version);
|
|
||||||
if (st < 0) {
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
10
PC/winreg.c
10
PC/winreg.c
@ -2079,15 +2079,9 @@ static struct PyMethodDef winreg_methods[] = {
|
|||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
static int
|
static int
|
||||||
inskey(PyObject *mod, char *name, HKEY key)
|
inskey(PyObject *mod, const char *name, HKEY key)
|
||||||
{
|
{
|
||||||
PyObject *v = PyLong_FromVoidPtr(key);
|
return PyModule_Add(mod, name, PyLong_FromVoidPtr(key));
|
||||||
if (v == NULL) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
int rc = PyModule_AddObjectRef(mod, name, v);
|
|
||||||
Py_DECREF(v);
|
|
||||||
return rc;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#define ADD_KEY(VAL) do { \
|
#define ADD_KEY(VAL) do { \
|
||||||
|
@ -3844,14 +3844,9 @@ imp_module_exec(PyObject *module)
|
|||||||
{
|
{
|
||||||
const wchar_t *mode = _Py_GetConfig()->check_hash_pycs_mode;
|
const wchar_t *mode = _Py_GetConfig()->check_hash_pycs_mode;
|
||||||
PyObject *pyc_mode = PyUnicode_FromWideChar(mode, -1);
|
PyObject *pyc_mode = PyUnicode_FromWideChar(mode, -1);
|
||||||
if (pyc_mode == NULL) {
|
if (PyModule_Add(module, "check_hash_based_pycs", pyc_mode) < 0) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (PyModule_AddObjectRef(module, "check_hash_based_pycs", pyc_mode) < 0) {
|
|
||||||
Py_DECREF(pyc_mode);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
Py_DECREF(pyc_mode);
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user