Skip to content

gh-99300: Use Py_NewRef() in Modules/ directory #99468

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Nov 14, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
79 changes: 27 additions & 52 deletions Modules/_sre/sre.c
Original file line number Diff line number Diff line change
Expand Up @@ -459,8 +459,7 @@ state_init(SRE_STATE* state, PatternObject* pattern, PyObject* string,
state->start = (void*) ((char*) ptr + start * state->charsize);
state->end = (void*) ((char*) ptr + end * state->charsize);

Py_INCREF(string);
state->string = string;
state->string = Py_NewRef(string);
state->pos = start;
state->endpos = end;

Expand Down Expand Up @@ -499,8 +498,7 @@ getslice(int isbytes, const void *ptr,
if (isbytes) {
if (PyBytes_CheckExact(string) &&
start == 0 && end == PyBytes_GET_SIZE(string)) {
Py_INCREF(string);
return string;
return Py_NewRef(string);
}
return PyBytes_FromStringAndSize(
(const char *)ptr + start, end - start);
Expand Down Expand Up @@ -1089,8 +1087,7 @@ pattern_subx(_sremodulestate* module_state,

if (PyCallable_Check(ptemplate)) {
/* sub/subn takes either a function or a template */
filter = ptemplate;
Py_INCREF(filter);
filter = Py_NewRef(ptemplate);
filter_type = CALLABLE;
} else {
/* if not callable, check if it's a literal string */
Expand All @@ -1109,8 +1106,7 @@ pattern_subx(_sremodulestate* module_state,
if (view.buf)
PyBuffer_Release(&view);
if (literal) {
filter = ptemplate;
Py_INCREF(filter);
filter = Py_NewRef(ptemplate);
filter_type = LITERAL;
} else {
/* not a literal; hand it over to the template compiler */
Expand All @@ -1120,8 +1116,8 @@ pattern_subx(_sremodulestate* module_state,

assert(Py_TYPE(filter) == module_state->Template_Type);
if (Py_SIZE(filter) == 0) {
Py_INCREF(((TemplateObject *)filter)->literal);
Py_SETREF(filter, ((TemplateObject *)filter)->literal);
Py_SETREF(filter,
Py_NewRef(((TemplateObject *)filter)->literal));
filter_type = LITERAL;
}
else {
Expand Down Expand Up @@ -1195,8 +1191,7 @@ pattern_subx(_sremodulestate* module_state,
goto error;
} else {
/* filter is literal string */
item = filter;
Py_INCREF(item);
item = Py_NewRef(filter);
}

/* add to list */
Expand Down Expand Up @@ -1317,8 +1312,7 @@ static PyObject *
_sre_SRE_Pattern___copy___impl(PatternObject *self)
/*[clinic end generated code: output=85dedc2db1bd8694 input=a730a59d863bc9f5]*/
{
Py_INCREF(self);
return (PyObject *)self;
return Py_NewRef(self);
}

/*[clinic input]
Expand All @@ -1333,8 +1327,7 @@ static PyObject *
_sre_SRE_Pattern___deepcopy__(PatternObject *self, PyObject *memo)
/*[clinic end generated code: output=2ad25679c1f1204a input=a465b1602f997bed]*/
{
Py_INCREF(self);
return (PyObject *)self;
return Py_NewRef(self);
}

static PyObject *
Expand Down Expand Up @@ -1500,19 +1493,16 @@ _sre_compile_impl(PyObject *module, PyObject *pattern, int flags,
PyBuffer_Release(&view);
}

Py_INCREF(pattern);
self->pattern = pattern;
self->pattern = Py_NewRef(pattern);

self->flags = flags;

self->groups = groups;

if (PyDict_GET_SIZE(groupindex) > 0) {
Py_INCREF(groupindex);
self->groupindex = groupindex;
self->groupindex = Py_NewRef(groupindex);
if (PyTuple_GET_SIZE(indexgroup) > 0) {
Py_INCREF(indexgroup);
self->indexgroup = indexgroup;
self->indexgroup = Py_NewRef(indexgroup);
}
}

Expand Down Expand Up @@ -1555,8 +1545,7 @@ _sre_template_impl(PyObject *module, PyObject *pattern, PyObject *template)
if (!self)
return NULL;
self->chunks = 1 + 2*n;
self->literal = PyList_GET_ITEM(template, 0);
Py_INCREF(self->literal);
self->literal = Py_NewRef(PyList_GET_ITEM(template, 0));
for (Py_ssize_t i = 0; i < n; i++) {
Py_ssize_t index = PyLong_AsSsize_t(PyList_GET_ITEM(template, 2*i+1));
if (index == -1 && PyErr_Occurred()) {
Expand All @@ -1576,8 +1565,7 @@ _sre_template_impl(PyObject *module, PyObject *pattern, PyObject *template)
literal = NULL;
self->chunks--;
}
Py_XINCREF(literal);
self->items[i].literal = literal;
self->items[i].literal = Py_XNewRef(literal);
}
return (PyObject*) self;

Expand Down Expand Up @@ -2128,8 +2116,7 @@ match_getslice_by_index(MatchObject* self, Py_ssize_t index, PyObject* def)

if (self->string == Py_None || self->mark[index] < 0) {
/* return default value if the string or group is undefined */
Py_INCREF(def);
return def;
return Py_NewRef(def);
}

ptr = getstring(self->string, &length, &isbytes, &charsize, &view);
Expand Down Expand Up @@ -2448,8 +2435,7 @@ match_regs(MatchObject* self)
PyTuple_SET_ITEM(regs, index, item);
}

Py_INCREF(regs);
self->regs = regs;
self->regs = Py_NewRef(regs);

return regs;
}
Expand All @@ -2463,8 +2449,7 @@ static PyObject *
_sre_SRE_Match___copy___impl(MatchObject *self)
/*[clinic end generated code: output=a779c5fc8b5b4eb4 input=3bb4d30b6baddb5b]*/
{
Py_INCREF(self);
return (PyObject *)self;
return Py_NewRef(self);
}

/*[clinic input]
Expand All @@ -2479,8 +2464,7 @@ static PyObject *
_sre_SRE_Match___deepcopy__(MatchObject *self, PyObject *memo)
/*[clinic end generated code: output=ba7cb46d655e4ee2 input=779d12a31c2c325e]*/
{
Py_INCREF(self);
return (PyObject *)self;
return Py_NewRef(self);
}

PyDoc_STRVAR(match_doc,
Expand Down Expand Up @@ -2509,8 +2493,7 @@ match_lastgroup_get(MatchObject *self, void *Py_UNUSED(ignored))
{
PyObject *result = PyTuple_GET_ITEM(self->pattern->indexgroup,
self->lastindex);
Py_INCREF(result);
return result;
return Py_NewRef(result);
}
Py_RETURN_NONE;
}
Expand All @@ -2519,8 +2502,7 @@ static PyObject *
match_regs_get(MatchObject *self, void *Py_UNUSED(ignored))
{
if (self->regs) {
Py_INCREF(self->regs);
return self->regs;
return Py_NewRef(self->regs);
} else
return match_regs(self);
}
Expand Down Expand Up @@ -2564,11 +2546,9 @@ pattern_new_match(_sremodulestate* module_state,
if (!match)
return NULL;

Py_INCREF(pattern);
match->pattern = pattern;
match->pattern = (PatternObject*)Py_NewRef(pattern);

Py_INCREF(state->string);
match->string = state->string;
match->string = Py_NewRef(state->string);

match->regs = NULL;
match->groups = pattern->groups+1;
Expand Down Expand Up @@ -2788,8 +2768,7 @@ pattern_scanner(_sremodulestate *module_state,
return NULL;
}

Py_INCREF(self);
scanner->pattern = (PyObject*) self;
scanner->pattern = Py_NewRef(self);

PyObject_GC_Track(scanner);
return (PyObject*) scanner;
Expand Down Expand Up @@ -2834,8 +2813,7 @@ static PyObject *
expand_template(TemplateObject *self, MatchObject *match)
{
if (Py_SIZE(self) == 0) {
Py_INCREF(self->literal);
return self->literal;
return Py_NewRef(self->literal);
}

PyObject *result = NULL;
Expand All @@ -2855,8 +2833,7 @@ expand_template(TemplateObject *self, MatchObject *match)
out = &PyList_GET_ITEM(list, 0);
}

Py_INCREF(self->literal);
out[count++] = self->literal;
out[count++] = Py_NewRef(self->literal);
for (Py_ssize_t i = 0; i < Py_SIZE(self); i++) {
Py_ssize_t index = self->items[i].index;
if (index >= match->groups) {
Expand All @@ -2868,15 +2845,13 @@ expand_template(TemplateObject *self, MatchObject *match)
goto cleanup;
}
if (item != Py_None) {
Py_INCREF(item);
out[count++] = item;
out[count++] = Py_NewRef(item);
}
Py_DECREF(item);

PyObject *literal = self->items[i].literal;
if (literal != NULL) {
Py_INCREF(literal);
out[count++] = literal;
out[count++] = Py_NewRef(literal);
}
}

Expand Down
Loading