mirror of https://github.com/python/cpython
gh-115754: Use Py_GetConstant(Py_CONSTANT_EMPTY_STR) (#125194)
Replace PyUnicode_New(0, 0), PyUnicode_FromString("") and PyUnicode_FromStringAndSize("", 0) with Py_GetConstant(Py_CONSTANT_EMPTY_STR).
This commit is contained in:
parent
6a39e96ab8
commit
b9a8ca0a6a
|
@ -23,12 +23,12 @@ Custom_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
|
||||||
CustomObject *self;
|
CustomObject *self;
|
||||||
self = (CustomObject *) type->tp_alloc(type, 0);
|
self = (CustomObject *) type->tp_alloc(type, 0);
|
||||||
if (self != NULL) {
|
if (self != NULL) {
|
||||||
self->first = PyUnicode_FromString("");
|
self->first = Py_GetConstant(Py_CONSTANT_EMPTY_STR);
|
||||||
if (self->first == NULL) {
|
if (self->first == NULL) {
|
||||||
Py_DECREF(self);
|
Py_DECREF(self);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
self->last = PyUnicode_FromString("");
|
self->last = Py_GetConstant(Py_CONSTANT_EMPTY_STR);
|
||||||
if (self->last == NULL) {
|
if (self->last == NULL) {
|
||||||
Py_DECREF(self);
|
Py_DECREF(self);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
|
@ -23,12 +23,12 @@ Custom_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
|
||||||
CustomObject *self;
|
CustomObject *self;
|
||||||
self = (CustomObject *) type->tp_alloc(type, 0);
|
self = (CustomObject *) type->tp_alloc(type, 0);
|
||||||
if (self != NULL) {
|
if (self != NULL) {
|
||||||
self->first = PyUnicode_FromString("");
|
self->first = Py_GetConstant(Py_CONSTANT_EMPTY_STR);
|
||||||
if (self->first == NULL) {
|
if (self->first == NULL) {
|
||||||
Py_DECREF(self);
|
Py_DECREF(self);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
self->last = PyUnicode_FromString("");
|
self->last = Py_GetConstant(Py_CONSTANT_EMPTY_STR);
|
||||||
if (self->last == NULL) {
|
if (self->last == NULL) {
|
||||||
Py_DECREF(self);
|
Py_DECREF(self);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
|
@ -39,12 +39,12 @@ Custom_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
|
||||||
CustomObject *self;
|
CustomObject *self;
|
||||||
self = (CustomObject *) type->tp_alloc(type, 0);
|
self = (CustomObject *) type->tp_alloc(type, 0);
|
||||||
if (self != NULL) {
|
if (self != NULL) {
|
||||||
self->first = PyUnicode_FromString("");
|
self->first = Py_GetConstant(Py_CONSTANT_EMPTY_STR);
|
||||||
if (self->first == NULL) {
|
if (self->first == NULL) {
|
||||||
Py_DECREF(self);
|
Py_DECREF(self);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
self->last = PyUnicode_FromString("");
|
self->last = Py_GetConstant(Py_CONSTANT_EMPTY_STR);
|
||||||
if (self->last == NULL) {
|
if (self->last == NULL) {
|
||||||
Py_DECREF(self);
|
Py_DECREF(self);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
|
@ -4756,7 +4756,7 @@ Array_subscript(PyObject *myself, PyObject *item)
|
||||||
wchar_t *dest;
|
wchar_t *dest;
|
||||||
|
|
||||||
if (slicelen <= 0)
|
if (slicelen <= 0)
|
||||||
return PyUnicode_New(0, 0);
|
return Py_GetConstant(Py_CONSTANT_EMPTY_STR);
|
||||||
if (step == 1) {
|
if (step == 1) {
|
||||||
return PyUnicode_FromWideChar(ptr + start,
|
return PyUnicode_FromWideChar(ptr + start,
|
||||||
slicelen);
|
slicelen);
|
||||||
|
@ -5438,7 +5438,7 @@ Pointer_subscript(PyObject *myself, PyObject *item)
|
||||||
wchar_t *dest;
|
wchar_t *dest;
|
||||||
|
|
||||||
if (len <= 0)
|
if (len <= 0)
|
||||||
return PyUnicode_New(0, 0);
|
return Py_GetConstant(Py_CONSTANT_EMPTY_STR);
|
||||||
if (step == 1) {
|
if (step == 1) {
|
||||||
return PyUnicode_FromWideChar(ptr + start,
|
return PyUnicode_FromWideChar(ptr + start,
|
||||||
len);
|
len);
|
||||||
|
|
|
@ -2921,7 +2921,7 @@ delta_bool(PyDateTime_Delta *self)
|
||||||
static PyObject *
|
static PyObject *
|
||||||
delta_repr(PyDateTime_Delta *self)
|
delta_repr(PyDateTime_Delta *self)
|
||||||
{
|
{
|
||||||
PyObject *args = PyUnicode_FromString("");
|
PyObject *args = Py_GetConstant(Py_CONSTANT_EMPTY_STR);
|
||||||
|
|
||||||
if (args == NULL) {
|
if (args == NULL) {
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
|
@ -196,7 +196,7 @@ list_join(PyObject* list)
|
||||||
PyObject* joiner;
|
PyObject* joiner;
|
||||||
PyObject* result;
|
PyObject* result;
|
||||||
|
|
||||||
joiner = PyUnicode_FromStringAndSize("", 0);
|
joiner = Py_GetConstant(Py_CONSTANT_EMPTY_STR);
|
||||||
if (!joiner)
|
if (!joiner)
|
||||||
return NULL;
|
return NULL;
|
||||||
result = PyUnicode_Join(joiner, list);
|
result = PyUnicode_Join(joiner, list);
|
||||||
|
@ -1317,7 +1317,7 @@ _elementtree_Element_findtext_impl(ElementObject *self, PyTypeObject *cls,
|
||||||
PyObject* text = element_get_text((ElementObject*)item);
|
PyObject* text = element_get_text((ElementObject*)item);
|
||||||
if (text == Py_None) {
|
if (text == Py_None) {
|
||||||
Py_DECREF(item);
|
Py_DECREF(item);
|
||||||
return PyUnicode_New(0, 0);
|
return Py_GetConstant(Py_CONSTANT_EMPTY_STR);
|
||||||
}
|
}
|
||||||
Py_XINCREF(text);
|
Py_XINCREF(text);
|
||||||
Py_DECREF(item);
|
Py_DECREF(item);
|
||||||
|
|
|
@ -604,7 +604,7 @@ partial_repr(partialobject *pto)
|
||||||
return PyUnicode_FromString("...");
|
return PyUnicode_FromString("...");
|
||||||
}
|
}
|
||||||
|
|
||||||
arglist = PyUnicode_FromString("");
|
arglist = Py_GetConstant(Py_CONSTANT_EMPTY_STR);
|
||||||
if (arglist == NULL)
|
if (arglist == NULL)
|
||||||
goto done;
|
goto done;
|
||||||
/* Pack positional arguments */
|
/* Pack positional arguments */
|
||||||
|
|
|
@ -353,7 +353,7 @@ _stringio_readline(stringio *self, Py_ssize_t limit)
|
||||||
|
|
||||||
/* In case of overseek, return the empty string */
|
/* In case of overseek, return the empty string */
|
||||||
if (self->pos >= self->string_size)
|
if (self->pos >= self->string_size)
|
||||||
return PyUnicode_New(0, 0);
|
return Py_GetConstant(Py_CONSTANT_EMPTY_STR);
|
||||||
|
|
||||||
start = self->buf + self->pos;
|
start = self->buf + self->pos;
|
||||||
if (limit < 0 || limit > self->string_size - self->pos)
|
if (limit < 0 || limit > self->string_size - self->pos)
|
||||||
|
|
|
@ -129,7 +129,7 @@ static PyObject *
|
||||||
get_timezones_offset_zero(PyObject *self, PyObject *args)
|
get_timezones_offset_zero(PyObject *self, PyObject *args)
|
||||||
{
|
{
|
||||||
PyObject *offset = PyDelta_FromDSU(0, 0, 0);
|
PyObject *offset = PyDelta_FromDSU(0, 0, 0);
|
||||||
PyObject *name = PyUnicode_FromString("");
|
PyObject *name = Py_GetConstant(Py_CONSTANT_EMPTY_STR);
|
||||||
if (offset == NULL || name == NULL) {
|
if (offset == NULL || name == NULL) {
|
||||||
Py_XDECREF(offset);
|
Py_XDECREF(offset);
|
||||||
Py_XDECREF(name);
|
Py_XDECREF(name);
|
||||||
|
|
|
@ -669,7 +669,7 @@ _multibytecodec_MultibyteCodec_decode_impl(MultibyteCodecObject *self,
|
||||||
|
|
||||||
if (datalen == 0) {
|
if (datalen == 0) {
|
||||||
ERROR_DECREF(errorcb);
|
ERROR_DECREF(errorcb);
|
||||||
return make_tuple(PyUnicode_New(0, 0), 0);
|
return make_tuple(Py_GetConstant(Py_CONSTANT_EMPTY_STR), 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
_PyUnicodeWriter_Init(&buf.writer);
|
_PyUnicodeWriter_Init(&buf.writer);
|
||||||
|
@ -1434,7 +1434,7 @@ mbstreamreader_iread(MultibyteStreamReaderObject *self,
|
||||||
Py_ssize_t rsize;
|
Py_ssize_t rsize;
|
||||||
|
|
||||||
if (sizehint == 0)
|
if (sizehint == 0)
|
||||||
return PyUnicode_New(0, 0);
|
return Py_GetConstant(Py_CONSTANT_EMPTY_STR);
|
||||||
|
|
||||||
_PyUnicodeWriter_Init(&buf.writer);
|
_PyUnicodeWriter_Init(&buf.writer);
|
||||||
buf.excobj = NULL;
|
buf.excobj = NULL;
|
||||||
|
|
|
@ -5636,7 +5636,7 @@ socket_gethostname(PyObject *self, PyObject *unused)
|
||||||
return PyErr_SetFromWindowsErr(0);
|
return PyErr_SetFromWindowsErr(0);
|
||||||
|
|
||||||
if (size == 0)
|
if (size == 0)
|
||||||
return PyUnicode_New(0, 0);
|
return Py_GetConstant(Py_CONSTANT_EMPTY_STR);
|
||||||
|
|
||||||
/* MSDN says ERROR_MORE_DATA may occur because DNS allows longer
|
/* MSDN says ERROR_MORE_DATA may occur because DNS allows longer
|
||||||
names */
|
names */
|
||||||
|
|
|
@ -413,7 +413,7 @@ unicodedata_UCD_decomposition_impl(PyObject *self, int chr)
|
||||||
if (UCD_Check(self)) {
|
if (UCD_Check(self)) {
|
||||||
const change_record *old = get_old_record(self, c);
|
const change_record *old = get_old_record(self, c);
|
||||||
if (old->category_changed == 0)
|
if (old->category_changed == 0)
|
||||||
return PyUnicode_FromString(""); /* unassigned */
|
return Py_GetConstant(Py_CONSTANT_EMPTY_STR); /* unassigned */
|
||||||
}
|
}
|
||||||
|
|
||||||
if (code < 0 || code >= 0x110000)
|
if (code < 0 || code >= 0x110000)
|
||||||
|
|
|
@ -862,7 +862,7 @@ PyObject_Format(PyObject *obj, PyObject *format_spec)
|
||||||
|
|
||||||
/* If no format_spec is provided, use an empty string */
|
/* If no format_spec is provided, use an empty string */
|
||||||
if (format_spec == NULL) {
|
if (format_spec == NULL) {
|
||||||
empty = PyUnicode_New(0, 0);
|
empty = Py_GetConstant(Py_CONSTANT_EMPTY_STR);
|
||||||
format_spec = empty;
|
format_spec = empty;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -154,7 +154,7 @@ BaseException_str(PyBaseExceptionObject *self)
|
||||||
{
|
{
|
||||||
switch (PyTuple_GET_SIZE(self->args)) {
|
switch (PyTuple_GET_SIZE(self->args)) {
|
||||||
case 0:
|
case 0:
|
||||||
return PyUnicode_FromString("");
|
return Py_GetConstant(Py_CONSTANT_EMPTY_STR);
|
||||||
case 1:
|
case 1:
|
||||||
return PyObject_Str(PyTuple_GET_ITEM(self->args, 0));
|
return PyObject_Str(PyTuple_GET_ITEM(self->args, 0));
|
||||||
default:
|
default:
|
||||||
|
@ -3001,7 +3001,7 @@ UnicodeEncodeError_str(PyObject *self)
|
||||||
|
|
||||||
if (exc->object == NULL) {
|
if (exc->object == NULL) {
|
||||||
/* Not properly initialized. */
|
/* Not properly initialized. */
|
||||||
return PyUnicode_FromString("");
|
return Py_GetConstant(Py_CONSTANT_EMPTY_STR);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Get reason and encoding as strings, which they might not be if
|
/* Get reason and encoding as strings, which they might not be if
|
||||||
|
@ -3123,7 +3123,7 @@ UnicodeDecodeError_str(PyObject *self)
|
||||||
|
|
||||||
if (exc->object == NULL) {
|
if (exc->object == NULL) {
|
||||||
/* Not properly initialized. */
|
/* Not properly initialized. */
|
||||||
return PyUnicode_FromString("");
|
return Py_GetConstant(Py_CONSTANT_EMPTY_STR);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Get reason and encoding as strings, which they might not be if
|
/* Get reason and encoding as strings, which they might not be if
|
||||||
|
@ -3224,7 +3224,7 @@ UnicodeTranslateError_str(PyObject *self)
|
||||||
|
|
||||||
if (exc->object == NULL) {
|
if (exc->object == NULL) {
|
||||||
/* Not properly initialized. */
|
/* Not properly initialized. */
|
||||||
return PyUnicode_FromString("");
|
return Py_GetConstant(Py_CONSTANT_EMPTY_STR);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Get reason as a string, which it might not be if it's been
|
/* Get reason as a string, which it might not be if it's been
|
||||||
|
|
|
@ -73,7 +73,7 @@ Py_LOCAL_INLINE(PyObject *)
|
||||||
SubString_new_object_or_empty(SubString *str)
|
SubString_new_object_or_empty(SubString *str)
|
||||||
{
|
{
|
||||||
if (str->str == NULL) {
|
if (str->str == NULL) {
|
||||||
return PyUnicode_New(0, 0);
|
return Py_GetConstant(Py_CONSTANT_EMPTY_STR);
|
||||||
}
|
}
|
||||||
return SubString_new_object(str);
|
return SubString_new_object(str);
|
||||||
}
|
}
|
||||||
|
@ -531,7 +531,7 @@ render_field(PyObject *fieldobj, SubString *format_spec, _PyUnicodeWriter *write
|
||||||
format_spec->start,
|
format_spec->start,
|
||||||
format_spec->end);
|
format_spec->end);
|
||||||
else
|
else
|
||||||
format_spec_object = PyUnicode_New(0, 0);
|
format_spec_object = Py_GetConstant(Py_CONSTANT_EMPTY_STR);
|
||||||
if (format_spec_object == NULL)
|
if (format_spec_object == NULL)
|
||||||
goto done;
|
goto done;
|
||||||
|
|
||||||
|
|
|
@ -276,7 +276,7 @@ get_error_line_from_tokenizer_buffers(Parser *p, Py_ssize_t lineno)
|
||||||
assert(p->tok->fp_interactive);
|
assert(p->tok->fp_interactive);
|
||||||
// We can reach this point if the tokenizer buffers for interactive source have not been
|
// We can reach this point if the tokenizer buffers for interactive source have not been
|
||||||
// initialized because we failed to decode the original source with the given locale.
|
// initialized because we failed to decode the original source with the given locale.
|
||||||
return PyUnicode_FromStringAndSize("", 0);
|
return Py_GetConstant(Py_CONSTANT_EMPTY_STR);
|
||||||
}
|
}
|
||||||
|
|
||||||
Py_ssize_t relative_lineno = p->starting_lineno ? lineno - p->starting_lineno + 1 : lineno;
|
Py_ssize_t relative_lineno = p->starting_lineno ? lineno - p->starting_lineno + 1 : lineno;
|
||||||
|
@ -359,7 +359,7 @@ _PyPegen_raise_error_known_location(Parser *p, PyObject *errtype,
|
||||||
error_line = get_error_line_from_tokenizer_buffers(p, lineno);
|
error_line = get_error_line_from_tokenizer_buffers(p, lineno);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
error_line = PyUnicode_FromStringAndSize("", 0);
|
error_line = Py_GetConstant(Py_CONSTANT_EMPTY_STR);
|
||||||
}
|
}
|
||||||
if (!error_line) {
|
if (!error_line) {
|
||||||
goto error;
|
goto error;
|
||||||
|
|
|
@ -263,7 +263,7 @@ tokenizeriter_next(tokenizeriterobject *it)
|
||||||
}
|
}
|
||||||
PyObject *str = NULL;
|
PyObject *str = NULL;
|
||||||
if (token.start == NULL || token.end == NULL) {
|
if (token.start == NULL || token.end == NULL) {
|
||||||
str = PyUnicode_FromString("");
|
str = Py_GetConstant(Py_CONSTANT_EMPTY_STR);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
str = PyUnicode_FromStringAndSize(token.start, token.end - token.start);
|
str = PyUnicode_FromStringAndSize(token.start, token.end - token.start);
|
||||||
|
@ -281,7 +281,7 @@ tokenizeriter_next(tokenizeriterobject *it)
|
||||||
PyObject* line = NULL;
|
PyObject* line = NULL;
|
||||||
int line_changed = 1;
|
int line_changed = 1;
|
||||||
if (it->tok->tok_extra_tokens && is_trailing_token) {
|
if (it->tok->tok_extra_tokens && is_trailing_token) {
|
||||||
line = PyUnicode_FromString("");
|
line = Py_GetConstant(Py_CONSTANT_EMPTY_STR);
|
||||||
} else {
|
} else {
|
||||||
Py_ssize_t size = it->tok->inp - line_start;
|
Py_ssize_t size = it->tok->inp - line_start;
|
||||||
if (size >= 1 && it->tok->implicit_newline) {
|
if (size >= 1 && it->tok->implicit_newline) {
|
||||||
|
@ -326,7 +326,7 @@ tokenizeriter_next(tokenizeriterobject *it)
|
||||||
else if (type == NL) {
|
else if (type == NL) {
|
||||||
if (it->tok->implicit_newline) {
|
if (it->tok->implicit_newline) {
|
||||||
Py_DECREF(str);
|
Py_DECREF(str);
|
||||||
str = PyUnicode_FromString("");
|
str = Py_GetConstant(Py_CONSTANT_EMPTY_STR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1287,7 +1287,7 @@ too_many_positional(PyThreadState *tstate, PyCodeObject *co,
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
/* This will not fail. */
|
/* This will not fail. */
|
||||||
kwonly_sig = PyUnicode_FromString("");
|
kwonly_sig = Py_GetConstant(Py_CONSTANT_EMPTY_STR);
|
||||||
assert(kwonly_sig != NULL);
|
assert(kwonly_sig != NULL);
|
||||||
}
|
}
|
||||||
_PyErr_Format(tstate, PyExc_TypeError,
|
_PyErr_Format(tstate, PyExc_TypeError,
|
||||||
|
|
|
@ -696,7 +696,7 @@ PyObject *PyCodec_IgnoreErrors(PyObject *exc)
|
||||||
wrong_exception_type(exc);
|
wrong_exception_type(exc);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
return Py_BuildValue("(Nn)", PyUnicode_New(0, 0), end);
|
return Py_BuildValue("(Nn)", Py_GetConstant(Py_CONSTANT_EMPTY_STR), end);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -740,7 +740,7 @@ get_locale_info(enum LocaleType type, LocaleInfo *locale_info)
|
||||||
break;
|
break;
|
||||||
case LT_NO_LOCALE:
|
case LT_NO_LOCALE:
|
||||||
locale_info->decimal_point = PyUnicode_FromOrdinal('.');
|
locale_info->decimal_point = PyUnicode_FromOrdinal('.');
|
||||||
locale_info->thousands_sep = PyUnicode_New(0, 0);
|
locale_info->thousands_sep = Py_GetConstant(Py_CONSTANT_EMPTY_STR);
|
||||||
if (!locale_info->decimal_point || !locale_info->thousands_sep)
|
if (!locale_info->decimal_point || !locale_info->thousands_sep)
|
||||||
return -1;
|
return -1;
|
||||||
locale_info->grouping = no_grouping;
|
locale_info->grouping = no_grouping;
|
||||||
|
|
|
@ -1226,7 +1226,7 @@ r_object(RFILE *p)
|
||||||
v = PyUnicode_DecodeUTF8(buffer, n, "surrogatepass");
|
v = PyUnicode_DecodeUTF8(buffer, n, "surrogatepass");
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
v = PyUnicode_New(0, 0);
|
v = Py_GetConstant(Py_CONSTANT_EMPTY_STR);
|
||||||
}
|
}
|
||||||
if (v == NULL)
|
if (v == NULL)
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -354,7 +354,7 @@ static void _dump_symtable(PySTEntryObject* ste, PyObject* prefix)
|
||||||
|
|
||||||
static void dump_symtable(PySTEntryObject* ste)
|
static void dump_symtable(PySTEntryObject* ste)
|
||||||
{
|
{
|
||||||
PyObject *empty = PyUnicode_FromString("");
|
PyObject *empty = Py_GetConstant(Py_CONSTANT_EMPTY_STR);
|
||||||
assert(empty != NULL);
|
assert(empty != NULL);
|
||||||
_dump_symtable(ste, empty);
|
_dump_symtable(ste, empty);
|
||||||
Py_DECREF(empty);
|
Py_DECREF(empty);
|
||||||
|
|
Loading…
Reference in New Issue