Skip to content

Commit 3817607

Browse files
authored
pythongh-99300: Use Py_NewRef() in Modules/ directory (python#99466)
Replace Py_INCREF() and Py_XINCREF() with Py_NewRef() and Py_XNewRef() in test C files of the Modules/ directory.
1 parent db11568 commit 3817607

10 files changed

+106
-214
lines changed

Modules/_abc.c

+6-12
Original file line numberDiff line numberDiff line change
@@ -524,8 +524,7 @@ _abc__abc_register_impl(PyObject *module, PyObject *self, PyObject *subclass)
524524
}
525525
int result = PyObject_IsSubclass(subclass, self);
526526
if (result > 0) {
527-
Py_INCREF(subclass);
528-
return subclass; /* Already a subclass. */
527+
return Py_NewRef(subclass); /* Already a subclass. */
529528
}
530529
if (result < 0) {
531530
return NULL;
@@ -561,8 +560,7 @@ _abc__abc_register_impl(PyObject *module, PyObject *self, PyObject *subclass)
561560
set_collection_flag_recursive((PyTypeObject *)subclass, collection_flag);
562561
}
563562
}
564-
Py_INCREF(subclass);
565-
return subclass;
563+
return Py_NewRef(subclass);
566564
}
567565

568566

@@ -598,8 +596,7 @@ _abc__abc_instancecheck_impl(PyObject *module, PyObject *self,
598596
goto end;
599597
}
600598
if (incache > 0) {
601-
result = Py_True;
602-
Py_INCREF(result);
599+
result = Py_NewRef(Py_True);
603600
goto end;
604601
}
605602
subtype = (PyObject *)Py_TYPE(instance);
@@ -610,8 +607,7 @@ _abc__abc_instancecheck_impl(PyObject *module, PyObject *self,
610607
goto end;
611608
}
612609
if (incache > 0) {
613-
result = Py_False;
614-
Py_INCREF(result);
610+
result = Py_NewRef(Py_False);
615611
goto end;
616612
}
617613
}
@@ -802,8 +798,7 @@ _abc__abc_subclasscheck_impl(PyObject *module, PyObject *self,
802798
end:
803799
Py_DECREF(impl);
804800
Py_XDECREF(subclasses);
805-
Py_XINCREF(result);
806-
return result;
801+
return Py_XNewRef(result);
807802
}
808803

809804

@@ -842,8 +837,7 @@ subclasscheck_check_registry(_abc_data *impl, PyObject *subclass,
842837
Py_ssize_t i = 0;
843838

844839
while (_PySet_NextEntry(impl->_abc_registry, &pos, &key, &hash)) {
845-
Py_INCREF(key);
846-
copy[i++] = key;
840+
copy[i++] = Py_NewRef(key);
847841
}
848842
assert(i == registry_size);
849843

Modules/_collectionsmodule.c

+20-40
Original file line numberDiff line numberDiff line change
@@ -299,8 +299,7 @@ deque_append_internal(dequeobject *deque, PyObject *item, Py_ssize_t maxlen)
299299
static PyObject *
300300
deque_append(dequeobject *deque, PyObject *item)
301301
{
302-
Py_INCREF(item);
303-
if (deque_append_internal(deque, item, deque->maxlen) < 0)
302+
if (deque_append_internal(deque, Py_NewRef(item), deque->maxlen) < 0)
304303
return NULL;
305304
Py_RETURN_NONE;
306305
}
@@ -336,8 +335,7 @@ deque_appendleft_internal(dequeobject *deque, PyObject *item, Py_ssize_t maxlen)
336335
static PyObject *
337336
deque_appendleft(dequeobject *deque, PyObject *item)
338337
{
339-
Py_INCREF(item);
340-
if (deque_appendleft_internal(deque, item, deque->maxlen) < 0)
338+
if (deque_appendleft_internal(deque, Py_NewRef(item), deque->maxlen) < 0)
341339
return NULL;
342340
Py_RETURN_NONE;
343341
}
@@ -655,14 +653,12 @@ deque_inplace_repeat(dequeobject *deque, Py_ssize_t n)
655653

656654
size = Py_SIZE(deque);
657655
if (size == 0 || n == 1) {
658-
Py_INCREF(deque);
659-
return (PyObject *)deque;
656+
return Py_NewRef(deque);
660657
}
661658

662659
if (n <= 0) {
663660
deque_clear(deque);
664-
Py_INCREF(deque);
665-
return (PyObject *)deque;
661+
return Py_NewRef(deque);
666662
}
667663

668664
if (size == 1) {
@@ -693,13 +689,11 @@ deque_inplace_repeat(dequeobject *deque, Py_ssize_t n)
693689
i += m;
694690
while (m--) {
695691
deque->rightindex++;
696-
Py_INCREF(item);
697-
deque->rightblock->data[deque->rightindex] = item;
692+
deque->rightblock->data[deque->rightindex] = Py_NewRef(item);
698693
}
699694
}
700695
Py_SET_SIZE(deque, Py_SIZE(deque) + i);
701-
Py_INCREF(deque);
702-
return (PyObject *)deque;
696+
return Py_NewRef(deque);
703697
}
704698

705699
if ((size_t)size > PY_SSIZE_T_MAX / (size_t)n) {
@@ -972,8 +966,7 @@ deque_count(dequeobject *deque, PyObject *v)
972966

973967
while (--n >= 0) {
974968
CHECK_NOT_END(b);
975-
item = b->data[index];
976-
Py_INCREF(item);
969+
item = Py_NewRef(b->data[index]);
977970
cmp = PyObject_RichCompareBool(item, v, Py_EQ);
978971
Py_DECREF(item);
979972
if (cmp < 0)
@@ -1011,8 +1004,7 @@ deque_contains(dequeobject *deque, PyObject *v)
10111004

10121005
while (--n >= 0) {
10131006
CHECK_NOT_END(b);
1014-
item = b->data[index];
1015-
Py_INCREF(item);
1007+
item = Py_NewRef(b->data[index]);
10161008
cmp = PyObject_RichCompareBool(item, v, Py_EQ);
10171009
Py_DECREF(item);
10181010
if (cmp) {
@@ -1201,8 +1193,7 @@ deque_item(dequeobject *deque, Py_ssize_t i)
12011193
}
12021194
}
12031195
item = b->data[i];
1204-
Py_INCREF(item);
1205-
return item;
1196+
return Py_NewRef(item);
12061197
}
12071198

12081199
static int
@@ -1231,8 +1222,7 @@ deque_remove(dequeobject *deque, PyObject *value)
12311222
int cmp, rv;
12321223

12331224
for (i = 0 ; i < n; i++) {
1234-
item = b->data[index];
1235-
Py_INCREF(item);
1225+
item = Py_NewRef(b->data[index]);
12361226
cmp = PyObject_RichCompareBool(item, value, Py_EQ);
12371227
Py_DECREF(item);
12381228
if (cmp < 0) {
@@ -1292,9 +1282,8 @@ deque_ass_item(dequeobject *deque, Py_ssize_t i, PyObject *v)
12921282
while (--n >= 0)
12931283
b = b->leftlink;
12941284
}
1295-
Py_INCREF(v);
12961285
old_value = b->data[i];
1297-
b->data[i] = v;
1286+
b->data[i] = Py_NewRef(v);
12981287
Py_DECREF(old_value);
12991288
return 0;
13001289
}
@@ -1686,8 +1675,7 @@ deque_iter(dequeobject *deque)
16861675
return NULL;
16871676
it->b = deque->leftblock;
16881677
it->index = deque->leftindex;
1689-
Py_INCREF(deque);
1690-
it->deque = deque;
1678+
it->deque = (dequeobject*)Py_NewRef(deque);
16911679
it->state = deque->state;
16921680
it->counter = Py_SIZE(deque);
16931681
PyObject_GC_Track(it);
@@ -1734,8 +1722,7 @@ dequeiter_next(dequeiterobject *it)
17341722
it->b = it->b->rightlink;
17351723
it->index = 0;
17361724
}
1737-
Py_INCREF(item);
1738-
return item;
1725+
return Py_NewRef(item);
17391726
}
17401727

17411728
static PyObject *
@@ -1844,8 +1831,7 @@ deque_reviter(dequeobject *deque, PyObject *Py_UNUSED(ignored))
18441831
return NULL;
18451832
it->b = deque->rightblock;
18461833
it->index = deque->rightindex;
1847-
Py_INCREF(deque);
1848-
it->deque = deque;
1834+
it->deque = (dequeobject*)Py_NewRef(deque);
18491835
it->state = deque->state;
18501836
it->counter = Py_SIZE(deque);
18511837
PyObject_GC_Track(it);
@@ -1876,8 +1862,7 @@ dequereviter_next(dequeiterobject *it)
18761862
it->b = it->b->leftlink;
18771863
it->index = BLOCKLEN - 1;
18781864
}
1879-
Py_INCREF(item);
1880-
return item;
1865+
return Py_NewRef(item);
18811866
}
18821867

18831868
static PyObject *
@@ -2203,8 +2188,7 @@ defdict_init(PyObject *self, PyObject *args, PyObject *kwds)
22032188
}
22042189
if (newargs == NULL)
22052190
return -1;
2206-
Py_XINCREF(newdefault);
2207-
dd->default_factory = newdefault;
2191+
dd->default_factory = Py_XNewRef(newdefault);
22082192
result = PyDict_Type.tp_init(self, newargs, kwds);
22092193
Py_DECREF(newargs);
22102194
Py_XDECREF(olddefault);
@@ -2414,8 +2398,7 @@ tuplegetter_new_impl(PyTypeObject *type, Py_ssize_t index, PyObject *doc)
24142398
return NULL;
24152399
}
24162400
self->index = index;
2417-
Py_INCREF(doc);
2418-
self->doc = doc;
2401+
self->doc = Py_NewRef(doc);
24192402
return (PyObject *)self;
24202403
}
24212404

@@ -2426,13 +2409,11 @@ tuplegetter_descr_get(PyObject *self, PyObject *obj, PyObject *type)
24262409
PyObject *result;
24272410

24282411
if (obj == NULL) {
2429-
Py_INCREF(self);
2430-
return self;
2412+
return Py_NewRef(self);
24312413
}
24322414
if (!PyTuple_Check(obj)) {
24332415
if (obj == Py_None) {
2434-
Py_INCREF(self);
2435-
return self;
2416+
return Py_NewRef(self);
24362417
}
24372418
PyErr_Format(PyExc_TypeError,
24382419
"descriptor for index '%zd' for tuple subclasses "
@@ -2448,8 +2429,7 @@ tuplegetter_descr_get(PyObject *self, PyObject *obj, PyObject *type)
24482429
}
24492430

24502431
result = PyTuple_GET_ITEM(obj, index);
2451-
Py_INCREF(result);
2452-
return result;
2432+
return Py_NewRef(result);
24532433
}
24542434

24552435
static int

Modules/_csv.c

+3-6
Original file line numberDiff line numberDiff line change
@@ -176,8 +176,7 @@ get_char_or_None(Py_UCS4 c)
176176
static PyObject *
177177
Dialect_get_lineterminator(DialectObj *self, void *Py_UNUSED(ignored))
178178
{
179-
Py_XINCREF(self->lineterminator);
180-
return self->lineterminator;
179+
return Py_XNewRef(self->lineterminator);
181180
}
182181

183182
static PyObject *
@@ -316,8 +315,7 @@ _set_str(const char *name, PyObject **target, PyObject *src, const char *dflt)
316315
else {
317316
if (PyUnicode_READY(src) == -1)
318317
return -1;
319-
Py_INCREF(src);
320-
Py_XSETREF(*target, src);
318+
Py_XSETREF(*target, Py_NewRef(src));
321319
}
322320
}
323321
return 0;
@@ -514,8 +512,7 @@ dialect_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
514512
goto err;
515513
}
516514

517-
ret = (PyObject *)self;
518-
Py_INCREF(self);
515+
ret = Py_NewRef(self);
519516
err:
520517
Py_CLEAR(self);
521518
Py_CLEAR(dialect);

Modules/_curses_panel.c

+9-18
Original file line numberDiff line numberDiff line change
@@ -261,8 +261,7 @@ PyCursesPanel_New(_curses_panel_state *state, PANEL *pan,
261261
Py_DECREF(po);
262262
return NULL;
263263
}
264-
po->wo = wo;
265-
Py_INCREF(wo);
264+
po->wo = (PyCursesWindowObject*)Py_NewRef(wo);
266265
return (PyObject *)po;
267266
}
268267

@@ -313,8 +312,7 @@ _curses_panel_panel_above_impl(PyCursesPanelObject *self)
313312
"panel_above: can't find Panel Object");
314313
return NULL;
315314
}
316-
Py_INCREF(po);
317-
return (PyObject *)po;
315+
return Py_NewRef(po);
318316
}
319317

320318
/* panel_below(NULL) returns the top panel in the stack. To get
@@ -344,8 +342,7 @@ _curses_panel_panel_below_impl(PyCursesPanelObject *self)
344342
"panel_below: can't find Panel Object");
345343
return NULL;
346344
}
347-
Py_INCREF(po);
348-
return (PyObject *)po;
345+
return Py_NewRef(po);
349346
}
350347

351348
/*[clinic input]
@@ -394,8 +391,7 @@ static PyObject *
394391
_curses_panel_panel_window_impl(PyCursesPanelObject *self)
395392
/*[clinic end generated code: output=5f05940d4106b4cb input=6067353d2c307901]*/
396393
{
397-
Py_INCREF(self->wo);
398-
return (PyObject *)self->wo;
394+
return Py_NewRef(self->wo);
399395
}
400396

401397
/*[clinic input]
@@ -428,8 +424,7 @@ _curses_panel_panel_replace_impl(PyCursesPanelObject *self,
428424
PyErr_SetString(state->PyCursesError, "replace_panel() returned ERR");
429425
return NULL;
430426
}
431-
Py_INCREF(win);
432-
Py_SETREF(po->wo, win);
427+
Py_SETREF(po->wo, Py_NewRef(win));
433428
Py_RETURN_NONE;
434429
}
435430

@@ -486,8 +481,7 @@ _curses_panel_panel_userptr_impl(PyCursesPanelObject *self,
486481
return NULL;
487482
}
488483

489-
Py_INCREF(obj);
490-
return obj;
484+
return Py_NewRef(obj);
491485
}
492486

493487

@@ -555,8 +549,7 @@ _curses_panel_bottom_panel_impl(PyObject *module)
555549
"panel_above: can't find Panel Object");
556550
return NULL;
557551
}
558-
Py_INCREF(po);
559-
return (PyObject *)po;
552+
return Py_NewRef(po);
560553
}
561554

562555
/*[clinic input]
@@ -614,8 +607,7 @@ _curses_panel_top_panel_impl(PyObject *module)
614607
"panel_below: can't find Panel Object");
615608
return NULL;
616609
}
617-
Py_INCREF(po);
618-
return (PyObject *)po;
610+
return Py_NewRef(po);
619611
}
620612

621613
/*[clinic input]
@@ -670,8 +662,7 @@ _curses_panel_exec(PyObject *mod)
670662
state->PyCursesError = PyErr_NewException(
671663
"_curses_panel.error", NULL, NULL);
672664

673-
Py_INCREF(state->PyCursesError);
674-
if (PyModule_AddObject(mod, "error", state->PyCursesError) < 0) {
665+
if (PyModule_AddObject(mod, "error", Py_NewRef(state->PyCursesError)) < 0) {
675666
Py_DECREF(state->PyCursesError);
676667
return -1;
677668
}

Modules/_cursesmodule.c

+1-2
Original file line numberDiff line numberDiff line change
@@ -389,8 +389,7 @@ PyCurses_ConvertToString(PyCursesWindowObject *win, PyObject *obj,
389389
#endif
390390
}
391391
else if (PyBytes_Check(obj)) {
392-
Py_INCREF(obj);
393-
*bytes = obj;
392+
*bytes = Py_NewRef(obj);
394393
/* check for embedded null bytes */
395394
if (PyBytes_AsStringAndSize(*bytes, &str, NULL) < 0) {
396395
Py_DECREF(obj);

Modules/_dbmmodule.c

+2-4
Original file line numberDiff line numberDiff line change
@@ -358,8 +358,7 @@ _dbm_dbm_get_impl(dbmobject *self, PyTypeObject *cls, const char *key,
358358
return PyBytes_FromStringAndSize(val.dptr, val.dsize);
359359
}
360360

361-
Py_INCREF(default_value);
362-
return default_value;
361+
return Py_NewRef(default_value);
363362
}
364363

365364
/*[clinic input]
@@ -419,8 +418,7 @@ _dbm_dbm_setdefault_impl(dbmobject *self, PyTypeObject *cls, const char *key,
419418
static PyObject *
420419
dbm__enter__(PyObject *self, PyObject *args)
421420
{
422-
Py_INCREF(self);
423-
return self;
421+
return Py_NewRef(self);
424422
}
425423

426424
static PyObject *

0 commit comments

Comments
 (0)