Skip to content
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 numberDiff line numberDiff 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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 DownExpand 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