gh-99300: Replace Py_INCREF() with Py_NewRef() (#99513) · python/cpython@3ed8803 · GitHub
Skip to content

Commit 3ed8803

Browse files
authored
gh-99300: Replace Py_INCREF() with Py_NewRef() (#99513)
Replace Py_INCREF() and Py_XINCREF() using a cast with Py_NewRef() and Py_XNewRef().
1 parent ea88d34 commit 3ed8803

12 files changed

Lines changed: 22 additions & 44 deletions

File tree

Modules/_asynciomodule.c

Lines changed: 2 additions & 4 deletions

Modules/_ctypes/_ctypes.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2937,8 +2937,7 @@ PyCData_FromBaseObj(PyObject *type, PyObject *base, Py_ssize_t index, char *adr)
29372937
assert(CDataObject_Check(base));
29382938
cmem->b_ptr = adr;
29392939
cmem->b_needsfree = 0;
2940-
Py_INCREF(base);
2941-
cmem->b_base = (CDataObject *)base;
2940+
cmem->b_base = (CDataObject *)Py_NewRef(base);
29422941
cmem->b_index = index;
29432942
} else { /* copy contents of adr */
29442943
if (-1 == PyCData_MallocBuffer(cmem, dict)) {

Modules/_ctypes/cfield.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -230,8 +230,7 @@ PyCField_get(CFieldObject *self, PyObject *inst, PyTypeObject *type)
230230
{
231231
CDataObject *src;
232232
if (inst == NULL) {
233-
Py_INCREF(self);
234-
return (PyObject *)self;
233+
return Py_NewRef(self);
235234
}
236235
if (!CDataObject_Check(inst)) {
237236
PyErr_SetString(PyExc_TypeError,

Modules/_elementtree.c

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -933,8 +933,7 @@ _elementtree_Element___getstate___impl(ElementObject *self)
933933
if (!children)
934934
return NULL;
935935
for (i = 0; i < PyList_GET_SIZE(children); i++) {
936-
PyObject *child = self->extra->children[i];
937-
Py_INCREF(child);
936+
PyObject *child = Py_NewRef(self->extra->children[i]);
938937
PyList_SET_ITEM(children, i, child);
939938
}
940939

@@ -1365,8 +1364,7 @@ _elementtree_Element_get_impl(ElementObject *self, PyObject *key,
13651364
/*[clinic end generated code: output=523c614142595d75 input=ee153bbf8cdb246e]*/
13661365
{
13671366
if (self->extra && self->extra->attrib) {
1368-
PyObject *attrib = self->extra->attrib;
1369-
Py_INCREF(attrib);
1367+
PyObject *attrib = Py_NewRef(self->extra->attrib);
13701368
PyObject *value = PyDict_GetItemWithError(attrib, key);
13711369
Py_XINCREF(value);
13721370
Py_DECREF(attrib);
@@ -1723,8 +1721,7 @@ element_subscr(PyObject* self_, PyObject* item)
17231721

17241722
for (cur = start, i = 0; i < slicelen;
17251723
cur += step, i++) {
1726-
PyObject* item = self->extra->children[cur];
1727-
Py_INCREF(item);
1724+
PyObject* item = Py_NewRef(self->extra->children[cur]);
17281725
PyList_SET_ITEM(list, i, item);
17291726
}
17301727

@@ -2761,8 +2758,7 @@ treebuilder_handle_end(TreeBuilderObject* self, PyObject* tag)
27612758
if (treebuilder_append_event(self, self->end_event_obj, self->last) < 0)
27622759
return NULL;
27632760

2764-
Py_INCREF(self->last);
2765-
return (PyObject*) self->last;
2761+
return Py_NewRef(self->last);
27662762
}
27672763

27682764
LOCAL(PyObject*)

Modules/_testbuffer.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1787,8 +1787,7 @@ ndarray_subscript(NDArrayObject *self, PyObject *key)
17871787
return unpack_single(base->buf, base->format, base->itemsize);
17881788
}
17891789
else if (key == Py_Ellipsis) {
1790-
Py_INCREF(self);
1791-
return (PyObject *)self;
1790+
return Py_NewRef(self);
17921791
}
17931792
else {
17941793
PyErr_SetString(PyExc_TypeError, "invalid indexing of scalar");

Modules/_testcapi/datetime.c

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -137,11 +137,9 @@ get_timezone_utc_capi(PyObject *self, PyObject *args)
137137
return NULL;
138138
}
139139
if (macro) {
140-
Py_INCREF(PyDateTime_TimeZone_UTC);
141-
return PyDateTime_TimeZone_UTC;
140+
return Py_NewRef(PyDateTime_TimeZone_UTC);
142141
}
143-
Py_INCREF(PyDateTimeAPI->TimeZone_UTC);
144-
return PyDateTimeAPI->TimeZone_UTC;
142+
return Py_NewRef(PyDateTimeAPI->TimeZone_UTC);
145143
}
146144

147145
static PyObject *

Modules/mmapmodule.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -746,8 +746,7 @@ mmap__enter__method(mmap_object *self, PyObject *args)
746746
{
747747
CHECK_VALID(NULL);
748748

749-
Py_INCREF(self);
750-
return (PyObject *)self;
749+
return Py_NewRef(self);
751750
}
752751

753752
static PyObject *

Modules/selectmodule.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1652,8 +1652,7 @@ select_epoll___enter___impl(pyEpoll_Object *self)
16521652
if (self->epfd < 0)
16531653
return pyepoll_err_closed();
16541654

1655-
Py_INCREF(self);
1656-
return (PyObject *)self;
1655+
return Py_NewRef(self);
16571656
}
16581657

16591658
/*[clinic input]

Modules/syslogmodule.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -205,8 +205,7 @@ syslog_syslog_impl(PyObject *module, int group_left_1, int priority,
205205
/* Incref ident, because it can be decrefed if syslog.openlog() is
206206
* called when the GIL is released.
207207
*/
208-
PyObject *ident = S_ident_o;
209-
Py_XINCREF(ident);
208+
PyObject *ident = Py_XNewRef(S_ident_o);
210209
#ifdef __APPLE__
211210
// gh-98178: On macOS, libc syslog() is not thread-safe
212211
syslog(priority, "%s", message);

Objects/bytearrayobject.c

Lines changed: 4 additions & 8 deletions

0 commit comments

Comments
 (0)