gh-99300: Replace Py_INCREF() with Py_NewRef() (#99530)

Replace Py_INCREF() and Py_XINCREF() using a cast with Py_NewRef()
and Py_XNewRef().
This commit is contained in:
Victor Stinner 2022-11-16 18:34:24 +01:00 committed by GitHub
parent 19c1462e8d
commit 8211cf5d28
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
18 changed files with 40 additions and 74 deletions

View file

@ -2402,8 +2402,7 @@ builtin_vars(PyObject *self, PyObject *args)
if (!PyArg_UnpackTuple(args, "vars", 0, 1, &v))
return NULL;
if (v == NULL) {
d = PyEval_GetLocals();
Py_XINCREF(d);
d = Py_XNewRef(PyEval_GetLocals());
}
else {
if (_PyObject_LookupAttr(v, &_Py_ID(__dict__), &d) == 0) {

View file

@ -428,8 +428,7 @@ _PyCodec_EncodeInternal(PyObject *object,
"encoder must return a tuple (object, integer)");
goto onError;
}
v = PyTuple_GET_ITEM(result,0);
Py_INCREF(v);
v = Py_NewRef(PyTuple_GET_ITEM(result,0));
/* We don't check or use the second (integer) entry. */
Py_DECREF(args);
@ -473,8 +472,7 @@ _PyCodec_DecodeInternal(PyObject *object,
"decoder must return a tuple (object,integer)");
goto onError;
}
v = PyTuple_GET_ITEM(result,0);
Py_INCREF(v);
v = Py_NewRef(PyTuple_GET_ITEM(result,0));
/* We don't check or use the second (integer) entry. */
Py_DECREF(args);
@ -569,8 +567,7 @@ PyObject *codec_getitem_checked(const char *encoding,
if (codec == NULL)
return NULL;
v = PyTuple_GET_ITEM(codec, index);
Py_INCREF(v);
v = Py_NewRef(PyTuple_GET_ITEM(codec, index));
Py_DECREF(codec);
return v;
}

View file

@ -1459,8 +1459,7 @@ merge_consts_recursive(PyObject *const_cache, PyObject *o)
}
PyObject *u;
if (PyTuple_CheckExact(k)) {
u = PyTuple_GET_ITEM(k, 1);
Py_INCREF(u);
u = Py_NewRef(PyTuple_GET_ITEM(k, 1));
Py_DECREF(k);
}
else {
@ -2732,8 +2731,7 @@ compiler_class(struct compiler *c, stmt_ty s)
{
location loc = LOCATION(firstlineno, firstlineno, 0, 0);
/* use the class name for name mangling */
Py_INCREF(s->v.ClassDef.name);
Py_XSETREF(c->u->u_private, s->v.ClassDef.name);
Py_XSETREF(c->u->u_private, Py_NewRef(s->v.ClassDef.name));
/* load (global) __name__ ... */
if (!compiler_nameop(c, loc, &_Py_ID(__name__), Load)) {
compiler_exit_scope(c);

View file

@ -178,8 +178,7 @@ _PyErr_SetObject(PyThreadState *tstate, PyObject *exception, PyObject *value)
}
if (value != NULL && PyExceptionInstance_Check(value))
tb = PyException_GetTraceback(value);
Py_XINCREF(exception);
_PyErr_Restore(tstate, exception, value, tb);
_PyErr_Restore(tstate, Py_XNewRef(exception), value, tb);
}
void
@ -489,13 +488,9 @@ _PyErr_GetExcInfo(PyThreadState *tstate,
{
_PyErr_StackItem *exc_info = _PyErr_GetTopmostException(tstate);
*p_type = get_exc_type(exc_info->exc_value);
*p_value = exc_info->exc_value;
*p_traceback = get_exc_traceback(exc_info->exc_value);
Py_XINCREF(*p_type);
Py_XINCREF(*p_value);
Py_XINCREF(*p_traceback);
*p_type = Py_XNewRef(get_exc_type(exc_info->exc_value));
*p_value = Py_XNewRef(exc_info->exc_value);
*p_traceback = Py_XNewRef(get_exc_traceback(exc_info->exc_value));
}
PyObject*
@ -674,9 +669,9 @@ _PyErr_FormatVFromCause(PyThreadState *tstate, PyObject *exception,
_PyErr_Fetch(tstate, &exc, &val2, &tb);
_PyErr_NormalizeException(tstate, &exc, &val2, &tb);
Py_INCREF(val);
PyException_SetCause(val2, val);
PyException_SetContext(val2, val);
PyException_SetCause(val2, Py_NewRef(val));
PyException_SetContext(val2, Py_NewRef(val));
Py_DECREF(val);
_PyErr_Restore(tstate, exc, val2, tb);
return NULL;
@ -1165,9 +1160,7 @@ PyErr_NewException(const char *name, PyObject *base, PyObject *dict)
goto failure;
}
if (PyTuple_Check(base)) {
bases = base;
/* INCREF as we create a new ref in the else branch */
Py_INCREF(bases);
bases = Py_NewRef(base);
} else {
bases = PyTuple_Pack(1, base);
if (bases == NULL)

View file

@ -838,8 +838,7 @@ hamt_node_bitmap_assoc(PyHamtNode_Bitmap *self,
if (self->b_array[j] == NULL) {
new_node->a_array[i] =
(PyHamtNode *)self->b_array[j + 1];
Py_INCREF(new_node->a_array[i]);
(PyHamtNode *)Py_NewRef(self->b_array[j + 1]);
}
else {
int32_t rehash = hamt_hash(self->b_array[j]);

View file

@ -625,8 +625,7 @@ import_add_module(PyThreadState *tstate, PyObject *name)
PyObject *m;
if (PyDict_CheckExact(modules)) {
m = PyDict_GetItemWithError(modules, name);
Py_XINCREF(m);
m = Py_XNewRef(PyDict_GetItemWithError(modules, name));
}
else {
m = PyObject_GetItem(modules, name);

View file

@ -326,8 +326,8 @@ w_ref(PyObject *v, char *flag, WFILE *p)
goto err;
}
w = (int)s;
Py_INCREF(v);
if (_Py_hashtable_set(p->hashtable, v, (void *)(uintptr_t)w) < 0) {
if (_Py_hashtable_set(p->hashtable, Py_NewRef(v),
(void *)(uintptr_t)w) < 0) {
Py_DECREF(v);
goto err;
}

View file

@ -515,8 +515,7 @@ parse_syntax_error(PyObject *err, PyObject **message, PyObject **filename,
if (v == Py_None) {
Py_DECREF(v);
_Py_DECLARE_STR(anon_string, "<string>");
*filename = &_Py_STR(anon_string);
Py_INCREF(*filename);
*filename = Py_NewRef(&_Py_STR(anon_string));
}
else {
*filename = v;

View file

@ -74,7 +74,7 @@ PyMember_GetOne(const char *obj_addr, PyMemberDef *l)
PyErr_Format(PyExc_AttributeError,
"'%.200s' object has no attribute '%s'",
tp->tp_name, l->name);
}
}
Py_XINCREF(v);
break;
case T_LONGLONG:

View file

@ -373,17 +373,17 @@ PySymtable_Lookup(struct symtable *st, void *key)
if (k == NULL)
return NULL;
v = PyDict_GetItemWithError(st->st_blocks, k);
Py_DECREF(k);
if (v) {
assert(PySTEntry_Check(v));
Py_INCREF(v);
}
else if (!PyErr_Occurred()) {
PyErr_SetString(PyExc_KeyError,
"unknown symbol table entry");
}
Py_DECREF(k);
return (PySTEntryObject *)v;
return (PySTEntryObject *)Py_XNewRef(v);
}
long