mirror of https://github.com/python/cpython
Issue #28701: Replace PyUnicode_CompareWithASCIIString with _PyUnicode_EqualToASCIIString.
The latter function is more readable, faster and doesn't raise exceptions.
This commit is contained in:
commit
1a73bf365e
|
@ -1643,6 +1643,9 @@ They all return *NULL* or ``-1`` if an exception occurs.
|
||||||
Compare two strings and return ``-1``, ``0``, ``1`` for less than, equal, and greater than,
|
Compare two strings and return ``-1``, ``0``, ``1`` for less than, equal, and greater than,
|
||||||
respectively.
|
respectively.
|
||||||
|
|
||||||
|
This function returns ``-1`` upon failure, so one should call
|
||||||
|
:c:func:`PyErr_Occurred` to check for errors.
|
||||||
|
|
||||||
|
|
||||||
.. c:function:: int PyUnicode_CompareWithASCIIString(PyObject *uni, const char *string)
|
.. c:function:: int PyUnicode_CompareWithASCIIString(PyObject *uni, const char *string)
|
||||||
|
|
||||||
|
@ -1651,6 +1654,9 @@ They all return *NULL* or ``-1`` if an exception occurs.
|
||||||
ASCII-encoded strings, but the function interprets the input string as
|
ASCII-encoded strings, but the function interprets the input string as
|
||||||
ISO-8859-1 if it contains non-ASCII characters.
|
ISO-8859-1 if it contains non-ASCII characters.
|
||||||
|
|
||||||
|
This function returns ``-1`` upon failure, so one should call
|
||||||
|
:c:func:`PyErr_Occurred` to check for errors.
|
||||||
|
|
||||||
|
|
||||||
.. c:function:: PyObject* PyUnicode_RichCompare(PyObject *left, PyObject *right, int op)
|
.. c:function:: PyObject* PyUnicode_RichCompare(PyObject *left, PyObject *right, int op)
|
||||||
|
|
||||||
|
|
|
@ -2048,6 +2048,17 @@ PyAPI_FUNC(int) PyUnicode_CompareWithASCIIString(
|
||||||
const char *right /* ASCII-encoded string */
|
const char *right /* ASCII-encoded string */
|
||||||
);
|
);
|
||||||
|
|
||||||
|
#ifndef Py_LIMITED_API
|
||||||
|
/* Test whether a unicode is equal to ASCII string. Return 1 if true,
|
||||||
|
0 otherwise. Return 0 if any argument contains non-ASCII characters.
|
||||||
|
Any error occurs inside will be cleared before return. */
|
||||||
|
|
||||||
|
PyAPI_FUNC(int) _PyUnicode_EqualToASCIIString(
|
||||||
|
PyObject *left,
|
||||||
|
const char *right /* ASCII-encoded string */
|
||||||
|
);
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Rich compare two strings and return one of the following:
|
/* Rich compare two strings and return one of the following:
|
||||||
|
|
||||||
- NULL in case an exception was raised
|
- NULL in case an exception was raised
|
||||||
|
|
|
@ -1118,12 +1118,12 @@ context_getattr(PyObject *self, PyObject *name)
|
||||||
PyObject *retval;
|
PyObject *retval;
|
||||||
|
|
||||||
if (PyUnicode_Check(name)) {
|
if (PyUnicode_Check(name)) {
|
||||||
if (PyUnicode_CompareWithASCIIString(name, "traps") == 0) {
|
if (_PyUnicode_EqualToASCIIString(name, "traps")) {
|
||||||
retval = ((PyDecContextObject *)self)->traps;
|
retval = ((PyDecContextObject *)self)->traps;
|
||||||
Py_INCREF(retval);
|
Py_INCREF(retval);
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
if (PyUnicode_CompareWithASCIIString(name, "flags") == 0) {
|
if (_PyUnicode_EqualToASCIIString(name, "flags")) {
|
||||||
retval = ((PyDecContextObject *)self)->flags;
|
retval = ((PyDecContextObject *)self)->flags;
|
||||||
Py_INCREF(retval);
|
Py_INCREF(retval);
|
||||||
return retval;
|
return retval;
|
||||||
|
@ -1143,10 +1143,10 @@ context_setattr(PyObject *self, PyObject *name, PyObject *value)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (PyUnicode_Check(name)) {
|
if (PyUnicode_Check(name)) {
|
||||||
if (PyUnicode_CompareWithASCIIString(name, "traps") == 0) {
|
if (_PyUnicode_EqualToASCIIString(name, "traps")) {
|
||||||
return context_settraps_dict(self, value);
|
return context_settraps_dict(self, value);
|
||||||
}
|
}
|
||||||
if (PyUnicode_CompareWithASCIIString(name, "flags") == 0) {
|
if (_PyUnicode_EqualToASCIIString(name, "flags")) {
|
||||||
return context_setstatus_dict(self, value);
|
return context_setstatus_dict(self, value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2449,14 +2449,14 @@ dectuple_as_str(PyObject *dectuple)
|
||||||
tmp = PyTuple_GET_ITEM(dectuple, 2);
|
tmp = PyTuple_GET_ITEM(dectuple, 2);
|
||||||
if (PyUnicode_Check(tmp)) {
|
if (PyUnicode_Check(tmp)) {
|
||||||
/* special */
|
/* special */
|
||||||
if (PyUnicode_CompareWithASCIIString(tmp, "F") == 0) {
|
if (_PyUnicode_EqualToASCIIString(tmp, "F")) {
|
||||||
strcat(sign_special, "Inf");
|
strcat(sign_special, "Inf");
|
||||||
is_infinite = 1;
|
is_infinite = 1;
|
||||||
}
|
}
|
||||||
else if (PyUnicode_CompareWithASCIIString(tmp, "n") == 0) {
|
else if (_PyUnicode_EqualToASCIIString(tmp, "n")) {
|
||||||
strcat(sign_special, "NaN");
|
strcat(sign_special, "NaN");
|
||||||
}
|
}
|
||||||
else if (PyUnicode_CompareWithASCIIString(tmp, "N") == 0) {
|
else if (_PyUnicode_EqualToASCIIString(tmp, "N")) {
|
||||||
strcat(sign_special, "sNaN");
|
strcat(sign_special, "sNaN");
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
|
@ -3661,11 +3661,11 @@ xmlparser_getattro(XMLParserObject* self, PyObject* nameobj)
|
||||||
{
|
{
|
||||||
if (PyUnicode_Check(nameobj)) {
|
if (PyUnicode_Check(nameobj)) {
|
||||||
PyObject* res;
|
PyObject* res;
|
||||||
if (PyUnicode_CompareWithASCIIString(nameobj, "entity") == 0)
|
if (_PyUnicode_EqualToASCIIString(nameobj, "entity"))
|
||||||
res = self->entity;
|
res = self->entity;
|
||||||
else if (PyUnicode_CompareWithASCIIString(nameobj, "target") == 0)
|
else if (_PyUnicode_EqualToASCIIString(nameobj, "target"))
|
||||||
res = self->target;
|
res = self->target;
|
||||||
else if (PyUnicode_CompareWithASCIIString(nameobj, "version") == 0) {
|
else if (_PyUnicode_EqualToASCIIString(nameobj, "version")) {
|
||||||
return PyUnicode_FromFormat(
|
return PyUnicode_FromFormat(
|
||||||
"Expat %d.%d.%d", XML_MAJOR_VERSION,
|
"Expat %d.%d.%d", XML_MAJOR_VERSION,
|
||||||
XML_MINOR_VERSION, XML_MICRO_VERSION);
|
XML_MINOR_VERSION, XML_MICRO_VERSION);
|
||||||
|
|
|
@ -1023,7 +1023,7 @@ _io_TextIOWrapper___init___impl(textio *self, PyObject *buffer,
|
||||||
else if (PyUnicode_Check(res)) {
|
else if (PyUnicode_Check(res)) {
|
||||||
const encodefuncentry *e = encodefuncs;
|
const encodefuncentry *e = encodefuncs;
|
||||||
while (e->name != NULL) {
|
while (e->name != NULL) {
|
||||||
if (!PyUnicode_CompareWithASCIIString(res, e->name)) {
|
if (_PyUnicode_EqualToASCIIString(res, e->name)) {
|
||||||
self->encodefunc = e->encodefunc;
|
self->encodefunc = e->encodefunc;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -93,11 +93,11 @@ char _PyIO_get_console_type(PyObject *path_or_fd) {
|
||||||
}
|
}
|
||||||
|
|
||||||
char m = '\0';
|
char m = '\0';
|
||||||
if (PyUnicode_CompareWithASCIIString(decoded_upper, "CONIN$") == 0) {
|
if (_PyUnicode_EqualToASCIIString(decoded_upper, "CONIN$")) {
|
||||||
m = 'r';
|
m = 'r';
|
||||||
} else if (PyUnicode_CompareWithASCIIString(decoded_upper, "CONOUT$") == 0) {
|
} else if (_PyUnicode_EqualToASCIIString(decoded_upper, "CONOUT$")) {
|
||||||
m = 'w';
|
m = 'w';
|
||||||
} else if (PyUnicode_CompareWithASCIIString(decoded_upper, "CON") == 0) {
|
} else if (_PyUnicode_EqualToASCIIString(decoded_upper, "CON")) {
|
||||||
m = 'x';
|
m = 'x';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -181,7 +181,7 @@ normalizeUserObj(PyObject *obj)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (modname != NULL) {
|
if (modname != NULL) {
|
||||||
if (PyUnicode_CompareWithASCIIString(modname, "builtins") != 0) {
|
if (!_PyUnicode_EqualToASCIIString(modname, "builtins")) {
|
||||||
PyObject *result;
|
PyObject *result;
|
||||||
result = PyUnicode_FromFormat("<%U.%s>", modname,
|
result = PyUnicode_FromFormat("<%U.%s>", modname,
|
||||||
fn->m_ml->ml_name);
|
fn->m_ml->ml_name);
|
||||||
|
|
|
@ -1687,7 +1687,7 @@ whichmodule(PyObject *global, PyObject *dotted_path)
|
||||||
while (PyDict_Next(modules_dict, &i, &module_name, &module)) {
|
while (PyDict_Next(modules_dict, &i, &module_name, &module)) {
|
||||||
PyObject *candidate;
|
PyObject *candidate;
|
||||||
if (PyUnicode_Check(module_name) &&
|
if (PyUnicode_Check(module_name) &&
|
||||||
!PyUnicode_CompareWithASCIIString(module_name, "__main__"))
|
_PyUnicode_EqualToASCIIString(module_name, "__main__"))
|
||||||
continue;
|
continue;
|
||||||
if (module == Py_None)
|
if (module == Py_None)
|
||||||
continue;
|
continue;
|
||||||
|
|
|
@ -1191,7 +1191,7 @@ static int pysqlite_connection_set_isolation_level(pysqlite_Connection* self, Py
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
for (candidate = begin_statements; *candidate; candidate++) {
|
for (candidate = begin_statements; *candidate; candidate++) {
|
||||||
if (!PyUnicode_CompareWithASCIIString(uppercase_level, *candidate + 6))
|
if (_PyUnicode_EqualToASCIIString(uppercase_level, *candidate + 6))
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
Py_DECREF(uppercase_level);
|
Py_DECREF(uppercase_level);
|
||||||
|
|
|
@ -2325,7 +2325,7 @@ test_string_from_format(PyObject *self, PyObject *args)
|
||||||
result = PyUnicode_FromFormat(FORMAT, (TYPE)1); \
|
result = PyUnicode_FromFormat(FORMAT, (TYPE)1); \
|
||||||
if (result == NULL) \
|
if (result == NULL) \
|
||||||
return NULL; \
|
return NULL; \
|
||||||
if (PyUnicode_CompareWithASCIIString(result, "1")) { \
|
if (!_PyUnicode_EqualToASCIIString(result, "1")) { \
|
||||||
msg = FORMAT " failed at 1"; \
|
msg = FORMAT " failed at 1"; \
|
||||||
goto Fail; \
|
goto Fail; \
|
||||||
} \
|
} \
|
||||||
|
|
|
@ -1244,8 +1244,7 @@ handlername2int(PyObject *name)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
for (i = 0; handler_info[i].name != NULL; i++) {
|
for (i = 0; handler_info[i].name != NULL; i++) {
|
||||||
if (PyUnicode_CompareWithASCIIString(
|
if (_PyUnicode_EqualToASCIIString(name, handler_info[i].name)) {
|
||||||
name, handler_info[i].name) == 0) {
|
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1283,45 +1282,45 @@ xmlparse_getattro(xmlparseobject *self, PyObject *nameobj)
|
||||||
|
|
||||||
first_char = PyUnicode_READ_CHAR(nameobj, 0);
|
first_char = PyUnicode_READ_CHAR(nameobj, 0);
|
||||||
if (first_char == 'E') {
|
if (first_char == 'E') {
|
||||||
if (PyUnicode_CompareWithASCIIString(nameobj, "ErrorCode") == 0)
|
if (_PyUnicode_EqualToASCIIString(nameobj, "ErrorCode"))
|
||||||
return PyLong_FromLong((long)
|
return PyLong_FromLong((long)
|
||||||
XML_GetErrorCode(self->itself));
|
XML_GetErrorCode(self->itself));
|
||||||
if (PyUnicode_CompareWithASCIIString(nameobj, "ErrorLineNumber") == 0)
|
if (_PyUnicode_EqualToASCIIString(nameobj, "ErrorLineNumber"))
|
||||||
return PyLong_FromLong((long)
|
return PyLong_FromLong((long)
|
||||||
XML_GetErrorLineNumber(self->itself));
|
XML_GetErrorLineNumber(self->itself));
|
||||||
if (PyUnicode_CompareWithASCIIString(nameobj, "ErrorColumnNumber") == 0)
|
if (_PyUnicode_EqualToASCIIString(nameobj, "ErrorColumnNumber"))
|
||||||
return PyLong_FromLong((long)
|
return PyLong_FromLong((long)
|
||||||
XML_GetErrorColumnNumber(self->itself));
|
XML_GetErrorColumnNumber(self->itself));
|
||||||
if (PyUnicode_CompareWithASCIIString(nameobj, "ErrorByteIndex") == 0)
|
if (_PyUnicode_EqualToASCIIString(nameobj, "ErrorByteIndex"))
|
||||||
return PyLong_FromLong((long)
|
return PyLong_FromLong((long)
|
||||||
XML_GetErrorByteIndex(self->itself));
|
XML_GetErrorByteIndex(self->itself));
|
||||||
}
|
}
|
||||||
if (first_char == 'C') {
|
if (first_char == 'C') {
|
||||||
if (PyUnicode_CompareWithASCIIString(nameobj, "CurrentLineNumber") == 0)
|
if (_PyUnicode_EqualToASCIIString(nameobj, "CurrentLineNumber"))
|
||||||
return PyLong_FromLong((long)
|
return PyLong_FromLong((long)
|
||||||
XML_GetCurrentLineNumber(self->itself));
|
XML_GetCurrentLineNumber(self->itself));
|
||||||
if (PyUnicode_CompareWithASCIIString(nameobj, "CurrentColumnNumber") == 0)
|
if (_PyUnicode_EqualToASCIIString(nameobj, "CurrentColumnNumber"))
|
||||||
return PyLong_FromLong((long)
|
return PyLong_FromLong((long)
|
||||||
XML_GetCurrentColumnNumber(self->itself));
|
XML_GetCurrentColumnNumber(self->itself));
|
||||||
if (PyUnicode_CompareWithASCIIString(nameobj, "CurrentByteIndex") == 0)
|
if (_PyUnicode_EqualToASCIIString(nameobj, "CurrentByteIndex"))
|
||||||
return PyLong_FromLong((long)
|
return PyLong_FromLong((long)
|
||||||
XML_GetCurrentByteIndex(self->itself));
|
XML_GetCurrentByteIndex(self->itself));
|
||||||
}
|
}
|
||||||
if (first_char == 'b') {
|
if (first_char == 'b') {
|
||||||
if (PyUnicode_CompareWithASCIIString(nameobj, "buffer_size") == 0)
|
if (_PyUnicode_EqualToASCIIString(nameobj, "buffer_size"))
|
||||||
return PyLong_FromLong((long) self->buffer_size);
|
return PyLong_FromLong((long) self->buffer_size);
|
||||||
if (PyUnicode_CompareWithASCIIString(nameobj, "buffer_text") == 0)
|
if (_PyUnicode_EqualToASCIIString(nameobj, "buffer_text"))
|
||||||
return get_pybool(self->buffer != NULL);
|
return get_pybool(self->buffer != NULL);
|
||||||
if (PyUnicode_CompareWithASCIIString(nameobj, "buffer_used") == 0)
|
if (_PyUnicode_EqualToASCIIString(nameobj, "buffer_used"))
|
||||||
return PyLong_FromLong((long) self->buffer_used);
|
return PyLong_FromLong((long) self->buffer_used);
|
||||||
}
|
}
|
||||||
if (PyUnicode_CompareWithASCIIString(nameobj, "namespace_prefixes") == 0)
|
if (_PyUnicode_EqualToASCIIString(nameobj, "namespace_prefixes"))
|
||||||
return get_pybool(self->ns_prefixes);
|
return get_pybool(self->ns_prefixes);
|
||||||
if (PyUnicode_CompareWithASCIIString(nameobj, "ordered_attributes") == 0)
|
if (_PyUnicode_EqualToASCIIString(nameobj, "ordered_attributes"))
|
||||||
return get_pybool(self->ordered_attributes);
|
return get_pybool(self->ordered_attributes);
|
||||||
if (PyUnicode_CompareWithASCIIString(nameobj, "specified_attributes") == 0)
|
if (_PyUnicode_EqualToASCIIString(nameobj, "specified_attributes"))
|
||||||
return get_pybool((long) self->specified_attributes);
|
return get_pybool((long) self->specified_attributes);
|
||||||
if (PyUnicode_CompareWithASCIIString(nameobj, "intern") == 0) {
|
if (_PyUnicode_EqualToASCIIString(nameobj, "intern")) {
|
||||||
if (self->intern == NULL) {
|
if (self->intern == NULL) {
|
||||||
Py_INCREF(Py_None);
|
Py_INCREF(Py_None);
|
||||||
return Py_None;
|
return Py_None;
|
||||||
|
@ -1383,7 +1382,7 @@ xmlparse_setattro(xmlparseobject *self, PyObject *name, PyObject *v)
|
||||||
PyErr_SetString(PyExc_RuntimeError, "Cannot delete attribute");
|
PyErr_SetString(PyExc_RuntimeError, "Cannot delete attribute");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (PyUnicode_CompareWithASCIIString(name, "buffer_text") == 0) {
|
if (_PyUnicode_EqualToASCIIString(name, "buffer_text")) {
|
||||||
int b = PyObject_IsTrue(v);
|
int b = PyObject_IsTrue(v);
|
||||||
if (b < 0)
|
if (b < 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -1405,7 +1404,7 @@ xmlparse_setattro(xmlparseobject *self, PyObject *name, PyObject *v)
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (PyUnicode_CompareWithASCIIString(name, "namespace_prefixes") == 0) {
|
if (_PyUnicode_EqualToASCIIString(name, "namespace_prefixes")) {
|
||||||
int b = PyObject_IsTrue(v);
|
int b = PyObject_IsTrue(v);
|
||||||
if (b < 0)
|
if (b < 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -1413,14 +1412,14 @@ xmlparse_setattro(xmlparseobject *self, PyObject *name, PyObject *v)
|
||||||
XML_SetReturnNSTriplet(self->itself, self->ns_prefixes);
|
XML_SetReturnNSTriplet(self->itself, self->ns_prefixes);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (PyUnicode_CompareWithASCIIString(name, "ordered_attributes") == 0) {
|
if (_PyUnicode_EqualToASCIIString(name, "ordered_attributes")) {
|
||||||
int b = PyObject_IsTrue(v);
|
int b = PyObject_IsTrue(v);
|
||||||
if (b < 0)
|
if (b < 0)
|
||||||
return -1;
|
return -1;
|
||||||
self->ordered_attributes = b;
|
self->ordered_attributes = b;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (PyUnicode_CompareWithASCIIString(name, "specified_attributes") == 0) {
|
if (_PyUnicode_EqualToASCIIString(name, "specified_attributes")) {
|
||||||
int b = PyObject_IsTrue(v);
|
int b = PyObject_IsTrue(v);
|
||||||
if (b < 0)
|
if (b < 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -1428,7 +1427,7 @@ xmlparse_setattro(xmlparseobject *self, PyObject *name, PyObject *v)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (PyUnicode_CompareWithASCIIString(name, "buffer_size") == 0) {
|
if (_PyUnicode_EqualToASCIIString(name, "buffer_size")) {
|
||||||
long new_buffer_size;
|
long new_buffer_size;
|
||||||
if (!PyLong_Check(v)) {
|
if (!PyLong_Check(v)) {
|
||||||
PyErr_SetString(PyExc_TypeError, "buffer_size must be an integer");
|
PyErr_SetString(PyExc_TypeError, "buffer_size must be an integer");
|
||||||
|
@ -1474,7 +1473,7 @@ xmlparse_setattro(xmlparseobject *self, PyObject *name, PyObject *v)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (PyUnicode_CompareWithASCIIString(name, "CharacterDataHandler") == 0) {
|
if (_PyUnicode_EqualToASCIIString(name, "CharacterDataHandler")) {
|
||||||
/* If we're changing the character data handler, flush all
|
/* If we're changing the character data handler, flush all
|
||||||
* cached data with the old handler. Not sure there's a
|
* cached data with the old handler. Not sure there's a
|
||||||
* "right" thing to do, though, but this probably won't
|
* "right" thing to do, though, but this probably won't
|
||||||
|
|
|
@ -5166,9 +5166,9 @@ long_to_bytes(PyLongObject *v, PyObject *args, PyObject *kwds)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!PyUnicode_CompareWithASCIIString(byteorder_str, "little"))
|
if (_PyUnicode_EqualToASCIIString(byteorder_str, "little"))
|
||||||
little_endian = 1;
|
little_endian = 1;
|
||||||
else if (!PyUnicode_CompareWithASCIIString(byteorder_str, "big"))
|
else if (_PyUnicode_EqualToASCIIString(byteorder_str, "big"))
|
||||||
little_endian = 0;
|
little_endian = 0;
|
||||||
else {
|
else {
|
||||||
PyErr_SetString(PyExc_ValueError,
|
PyErr_SetString(PyExc_ValueError,
|
||||||
|
@ -5249,9 +5249,9 @@ long_from_bytes(PyTypeObject *type, PyObject *args, PyObject *kwds)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!PyUnicode_CompareWithASCIIString(byteorder_str, "little"))
|
if (_PyUnicode_EqualToASCIIString(byteorder_str, "little"))
|
||||||
little_endian = 1;
|
little_endian = 1;
|
||||||
else if (!PyUnicode_CompareWithASCIIString(byteorder_str, "big"))
|
else if (_PyUnicode_EqualToASCIIString(byteorder_str, "big"))
|
||||||
little_endian = 0;
|
little_endian = 0;
|
||||||
else {
|
else {
|
||||||
PyErr_SetString(PyExc_ValueError,
|
PyErr_SetString(PyExc_ValueError,
|
||||||
|
|
|
@ -586,7 +586,7 @@ _PyModule_ClearDict(PyObject *d)
|
||||||
while (PyDict_Next(d, &pos, &key, &value)) {
|
while (PyDict_Next(d, &pos, &key, &value)) {
|
||||||
if (value != Py_None && PyUnicode_Check(key)) {
|
if (value != Py_None && PyUnicode_Check(key)) {
|
||||||
if (PyUnicode_READ_CHAR(key, 0) != '_' ||
|
if (PyUnicode_READ_CHAR(key, 0) != '_' ||
|
||||||
PyUnicode_CompareWithASCIIString(key, "__builtins__") != 0)
|
!_PyUnicode_EqualToASCIIString(key, "__builtins__"))
|
||||||
{
|
{
|
||||||
if (Py_VerboseFlag > 1) {
|
if (Py_VerboseFlag > 1) {
|
||||||
const char *s = _PyUnicode_AsString(key);
|
const char *s = _PyUnicode_AsString(key);
|
||||||
|
|
|
@ -2412,7 +2412,7 @@ type_new(PyTypeObject *metatype, PyObject *args, PyObject *kwds)
|
||||||
}
|
}
|
||||||
add_dict++;
|
add_dict++;
|
||||||
}
|
}
|
||||||
if (PyUnicode_CompareWithASCIIString(tmp, "__weakref__") == 0) {
|
if (_PyUnicode_EqualToASCIIString(tmp, "__weakref__")) {
|
||||||
if (!may_add_weak || add_weak) {
|
if (!may_add_weak || add_weak) {
|
||||||
PyErr_SetString(PyExc_TypeError,
|
PyErr_SetString(PyExc_TypeError,
|
||||||
"__weakref__ slot disallowed: "
|
"__weakref__ slot disallowed: "
|
||||||
|
@ -2436,7 +2436,7 @@ type_new(PyTypeObject *metatype, PyObject *args, PyObject *kwds)
|
||||||
if ((add_dict &&
|
if ((add_dict &&
|
||||||
_PyUnicode_CompareWithId(tmp, &PyId___dict__) == 0) ||
|
_PyUnicode_CompareWithId(tmp, &PyId___dict__) == 0) ||
|
||||||
(add_weak &&
|
(add_weak &&
|
||||||
PyUnicode_CompareWithASCIIString(tmp, "__weakref__") == 0))
|
_PyUnicode_EqualToASCIIString(tmp, "__weakref__")))
|
||||||
continue;
|
continue;
|
||||||
tmp =_Py_Mangle(name, tmp);
|
tmp =_Py_Mangle(name, tmp);
|
||||||
if (!tmp) {
|
if (!tmp) {
|
||||||
|
|
|
@ -11048,6 +11048,41 @@ PyUnicode_CompareWithASCIIString(PyObject* uni, const char* str)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
non_ready_unicode_equal_to_ascii_string(PyObject *unicode, const char *str)
|
||||||
|
{
|
||||||
|
size_t i, len;
|
||||||
|
const wchar_t *p;
|
||||||
|
len = (size_t)_PyUnicode_WSTR_LENGTH(unicode);
|
||||||
|
if (strlen(str) != len)
|
||||||
|
return 0;
|
||||||
|
p = _PyUnicode_WSTR(unicode);
|
||||||
|
assert(p);
|
||||||
|
for (i = 0; i < len; i++) {
|
||||||
|
unsigned char c = (unsigned char)str[i];
|
||||||
|
if (c > 128 || p[i] != (wchar_t)c)
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
_PyUnicode_EqualToASCIIString(PyObject *unicode, const char *str)
|
||||||
|
{
|
||||||
|
size_t len;
|
||||||
|
assert(_PyUnicode_CHECK(unicode));
|
||||||
|
if (PyUnicode_READY(unicode) == -1) {
|
||||||
|
/* Memory error or bad data */
|
||||||
|
PyErr_Clear();
|
||||||
|
return non_ready_unicode_equal_to_ascii_string(unicode, str);
|
||||||
|
}
|
||||||
|
if (!PyUnicode_IS_ASCII(unicode))
|
||||||
|
return 0;
|
||||||
|
len = (size_t)PyUnicode_GET_LENGTH(unicode);
|
||||||
|
return strlen(str) == len &&
|
||||||
|
memcmp(PyUnicode_1BYTE_DATA(unicode), str, len) == 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#define TEST_COND(cond) \
|
#define TEST_COND(cond) \
|
||||||
((cond) ? Py_True : Py_False)
|
((cond) ? Py_True : Py_False)
|
||||||
|
|
|
@ -503,7 +503,7 @@ warn_explicit(PyObject *category, PyObject *message,
|
||||||
if (action == NULL)
|
if (action == NULL)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
if (PyUnicode_CompareWithASCIIString(action, "error") == 0) {
|
if (_PyUnicode_EqualToASCIIString(action, "error")) {
|
||||||
PyErr_SetObject(category, message);
|
PyErr_SetObject(category, message);
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
@ -511,13 +511,13 @@ warn_explicit(PyObject *category, PyObject *message,
|
||||||
/* Store in the registry that we've been here, *except* when the action
|
/* Store in the registry that we've been here, *except* when the action
|
||||||
is "always". */
|
is "always". */
|
||||||
rc = 0;
|
rc = 0;
|
||||||
if (PyUnicode_CompareWithASCIIString(action, "always") != 0) {
|
if (!_PyUnicode_EqualToASCIIString(action, "always")) {
|
||||||
if (registry != NULL && registry != Py_None &&
|
if (registry != NULL && registry != Py_None &&
|
||||||
PyDict_SetItem(registry, key, Py_True) < 0)
|
PyDict_SetItem(registry, key, Py_True) < 0)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
else if (PyUnicode_CompareWithASCIIString(action, "ignore") == 0)
|
else if (_PyUnicode_EqualToASCIIString(action, "ignore"))
|
||||||
goto return_none;
|
goto return_none;
|
||||||
else if (PyUnicode_CompareWithASCIIString(action, "once") == 0) {
|
else if (_PyUnicode_EqualToASCIIString(action, "once")) {
|
||||||
if (registry == NULL || registry == Py_None) {
|
if (registry == NULL || registry == Py_None) {
|
||||||
registry = get_once_registry();
|
registry = get_once_registry();
|
||||||
if (registry == NULL)
|
if (registry == NULL)
|
||||||
|
@ -526,12 +526,12 @@ warn_explicit(PyObject *category, PyObject *message,
|
||||||
/* _once_registry[(text, category)] = 1 */
|
/* _once_registry[(text, category)] = 1 */
|
||||||
rc = update_registry(registry, text, category, 0);
|
rc = update_registry(registry, text, category, 0);
|
||||||
}
|
}
|
||||||
else if (PyUnicode_CompareWithASCIIString(action, "module") == 0) {
|
else if (_PyUnicode_EqualToASCIIString(action, "module")) {
|
||||||
/* registry[(text, category, 0)] = 1 */
|
/* registry[(text, category, 0)] = 1 */
|
||||||
if (registry != NULL && registry != Py_None)
|
if (registry != NULL && registry != Py_None)
|
||||||
rc = update_registry(registry, text, category, 0);
|
rc = update_registry(registry, text, category, 0);
|
||||||
}
|
}
|
||||||
else if (PyUnicode_CompareWithASCIIString(action, "default") != 0) {
|
else if (!_PyUnicode_EqualToASCIIString(action, "default")) {
|
||||||
PyErr_Format(PyExc_RuntimeError,
|
PyErr_Format(PyExc_RuntimeError,
|
||||||
"Unrecognized action (%R) in warnings.filters:\n %R",
|
"Unrecognized action (%R) in warnings.filters:\n %R",
|
||||||
action, item);
|
action, item);
|
||||||
|
@ -715,7 +715,7 @@ setup_context(Py_ssize_t stack_level, PyObject **filename, int *lineno,
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
*filename = NULL;
|
*filename = NULL;
|
||||||
if (*module != Py_None && PyUnicode_CompareWithASCIIString(*module, "__main__") == 0) {
|
if (*module != Py_None && _PyUnicode_EqualToASCIIString(*module, "__main__")) {
|
||||||
PyObject *argv = _PySys_GetObjectId(&PyId_argv);
|
PyObject *argv = _PySys_GetObjectId(&PyId_argv);
|
||||||
/* PyList_Check() is needed because sys.argv is set to None during
|
/* PyList_Check() is needed because sys.argv is set to None during
|
||||||
Python finalization */
|
Python finalization */
|
||||||
|
|
|
@ -934,12 +934,12 @@ forbidden_name(struct compiling *c, identifier name, const node *n,
|
||||||
int full_checks)
|
int full_checks)
|
||||||
{
|
{
|
||||||
assert(PyUnicode_Check(name));
|
assert(PyUnicode_Check(name));
|
||||||
if (PyUnicode_CompareWithASCIIString(name, "__debug__") == 0) {
|
if (_PyUnicode_EqualToASCIIString(name, "__debug__")) {
|
||||||
ast_error(c, n, "assignment to keyword");
|
ast_error(c, n, "assignment to keyword");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
if (PyUnicode_CompareWithASCIIString(name, "async") == 0 ||
|
if (_PyUnicode_EqualToASCIIString(name, "async") ||
|
||||||
PyUnicode_CompareWithASCIIString(name, "await") == 0)
|
_PyUnicode_EqualToASCIIString(name, "await"))
|
||||||
{
|
{
|
||||||
PyObject *message = PyUnicode_FromString(
|
PyObject *message = PyUnicode_FromString(
|
||||||
"'async' and 'await' will become reserved keywords"
|
"'async' and 'await' will become reserved keywords"
|
||||||
|
@ -963,7 +963,7 @@ forbidden_name(struct compiling *c, identifier name, const node *n,
|
||||||
if (full_checks) {
|
if (full_checks) {
|
||||||
const char * const *p;
|
const char * const *p;
|
||||||
for (p = FORBIDDEN; *p; p++) {
|
for (p = FORBIDDEN; *p; p++) {
|
||||||
if (PyUnicode_CompareWithASCIIString(name, *p) == 0) {
|
if (_PyUnicode_EqualToASCIIString(name, *p)) {
|
||||||
ast_error(c, n, "assignment to keyword");
|
ast_error(c, n, "assignment to keyword");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1522,7 +1522,7 @@ get_ref_type(struct compiler *c, PyObject *name)
|
||||||
{
|
{
|
||||||
int scope;
|
int scope;
|
||||||
if (c->u->u_scope_type == COMPILER_SCOPE_CLASS &&
|
if (c->u->u_scope_type == COMPILER_SCOPE_CLASS &&
|
||||||
!PyUnicode_CompareWithASCIIString(name, "__class__"))
|
_PyUnicode_EqualToASCIIString(name, "__class__"))
|
||||||
return CELL;
|
return CELL;
|
||||||
scope = PyST_GetScope(c->u->u_ste, name);
|
scope = PyST_GetScope(c->u->u_ste, name);
|
||||||
if (scope == 0) {
|
if (scope == 0) {
|
||||||
|
@ -2688,7 +2688,7 @@ compiler_from_import(struct compiler *c, stmt_ty s)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (s->lineno > c->c_future->ff_lineno && s->v.ImportFrom.module &&
|
if (s->lineno > c->c_future->ff_lineno && s->v.ImportFrom.module &&
|
||||||
!PyUnicode_CompareWithASCIIString(s->v.ImportFrom.module, "__future__")) {
|
_PyUnicode_EqualToASCIIString(s->v.ImportFrom.module, "__future__")) {
|
||||||
Py_DECREF(level);
|
Py_DECREF(level);
|
||||||
Py_DECREF(names);
|
Py_DECREF(names);
|
||||||
return compiler_error(c, "from __future__ imports must occur "
|
return compiler_error(c, "from __future__ imports must occur "
|
||||||
|
@ -3027,9 +3027,9 @@ compiler_nameop(struct compiler *c, identifier name, expr_context_ty ctx)
|
||||||
if (!mangled)
|
if (!mangled)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
assert(PyUnicode_CompareWithASCIIString(name, "None") &&
|
assert(!_PyUnicode_EqualToASCIIString(name, "None") &&
|
||||||
PyUnicode_CompareWithASCIIString(name, "True") &&
|
!_PyUnicode_EqualToASCIIString(name, "True") &&
|
||||||
PyUnicode_CompareWithASCIIString(name, "False"));
|
!_PyUnicode_EqualToASCIIString(name, "False"));
|
||||||
|
|
||||||
op = 0;
|
op = 0;
|
||||||
optype = OP_NAME;
|
optype = OP_NAME;
|
||||||
|
|
|
@ -102,7 +102,7 @@ future_parse(PyFutureFeatures *ff, mod_ty mod, PyObject *filename)
|
||||||
if (s->kind == ImportFrom_kind) {
|
if (s->kind == ImportFrom_kind) {
|
||||||
identifier modname = s->v.ImportFrom.module;
|
identifier modname = s->v.ImportFrom.module;
|
||||||
if (modname &&
|
if (modname &&
|
||||||
!PyUnicode_CompareWithASCIIString(modname, "__future__")) {
|
_PyUnicode_EqualToASCIIString(modname, "__future__")) {
|
||||||
if (done) {
|
if (done) {
|
||||||
PyErr_SetString(PyExc_SyntaxError,
|
PyErr_SetString(PyExc_SyntaxError,
|
||||||
ERR_LATE_FUTURE);
|
ERR_LATE_FUTURE);
|
||||||
|
|
|
@ -1808,7 +1808,7 @@ vgetargskeywords(PyObject *args, PyObject *keywords, const char *format,
|
||||||
return cleanreturn(0, &freelist);
|
return cleanreturn(0, &freelist);
|
||||||
}
|
}
|
||||||
for (i = 0; i < len; i++) {
|
for (i = 0; i < len; i++) {
|
||||||
if (*kwlist[i] && !PyUnicode_CompareWithASCIIString(key, kwlist[i])) {
|
if (*kwlist[i] && _PyUnicode_EqualToASCIIString(key, kwlist[i])) {
|
||||||
match = 1;
|
match = 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -936,10 +936,9 @@ static const struct _frozen * find_frozen(PyObject *);
|
||||||
static int
|
static int
|
||||||
is_builtin(PyObject *name)
|
is_builtin(PyObject *name)
|
||||||
{
|
{
|
||||||
int i, cmp;
|
int i;
|
||||||
for (i = 0; PyImport_Inittab[i].name != NULL; i++) {
|
for (i = 0; PyImport_Inittab[i].name != NULL; i++) {
|
||||||
cmp = PyUnicode_CompareWithASCIIString(name, PyImport_Inittab[i].name);
|
if (_PyUnicode_EqualToASCIIString(name, PyImport_Inittab[i].name)) {
|
||||||
if (cmp == 0) {
|
|
||||||
if (PyImport_Inittab[i].initfunc == NULL)
|
if (PyImport_Inittab[i].initfunc == NULL)
|
||||||
return -1;
|
return -1;
|
||||||
else
|
else
|
||||||
|
@ -1059,7 +1058,7 @@ _imp_create_builtin(PyObject *module, PyObject *spec)
|
||||||
|
|
||||||
for (p = PyImport_Inittab; p->name != NULL; p++) {
|
for (p = PyImport_Inittab; p->name != NULL; p++) {
|
||||||
PyModuleDef *def;
|
PyModuleDef *def;
|
||||||
if (PyUnicode_CompareWithASCIIString(name, p->name) == 0) {
|
if (_PyUnicode_EqualToASCIIString(name, p->name)) {
|
||||||
if (p->initfunc == NULL) {
|
if (p->initfunc == NULL) {
|
||||||
/* Cannot re-init internal module ("sys" or "builtins") */
|
/* Cannot re-init internal module ("sys" or "builtins") */
|
||||||
mod = PyImport_AddModule(namestr);
|
mod = PyImport_AddModule(namestr);
|
||||||
|
@ -1109,7 +1108,7 @@ find_frozen(PyObject *name)
|
||||||
for (p = PyImport_FrozenModules; ; p++) {
|
for (p = PyImport_FrozenModules; ; p++) {
|
||||||
if (p->name == NULL)
|
if (p->name == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
if (PyUnicode_CompareWithASCIIString(name, p->name) == 0)
|
if (_PyUnicode_EqualToASCIIString(name, p->name))
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return p;
|
return p;
|
||||||
|
@ -1310,12 +1309,8 @@ remove_importlib_frames(void)
|
||||||
int now_in_importlib;
|
int now_in_importlib;
|
||||||
|
|
||||||
assert(PyTraceBack_Check(tb));
|
assert(PyTraceBack_Check(tb));
|
||||||
now_in_importlib = (PyUnicode_CompareWithASCIIString(
|
now_in_importlib = _PyUnicode_EqualToASCIIString(code->co_filename, importlib_filename) ||
|
||||||
code->co_filename,
|
_PyUnicode_EqualToASCIIString(code->co_filename, external_filename);
|
||||||
importlib_filename) == 0) ||
|
|
||||||
(PyUnicode_CompareWithASCIIString(
|
|
||||||
code->co_filename,
|
|
||||||
external_filename) == 0);
|
|
||||||
if (now_in_importlib && !in_importlib) {
|
if (now_in_importlib && !in_importlib) {
|
||||||
/* This is the link to this chunk of importlib tracebacks */
|
/* This is the link to this chunk of importlib tracebacks */
|
||||||
outer_link = prev_link;
|
outer_link = prev_link;
|
||||||
|
@ -1324,8 +1319,7 @@ remove_importlib_frames(void)
|
||||||
|
|
||||||
if (in_importlib &&
|
if (in_importlib &&
|
||||||
(always_trim ||
|
(always_trim ||
|
||||||
PyUnicode_CompareWithASCIIString(code->co_name,
|
_PyUnicode_EqualToASCIIString(code->co_name, remove_frames))) {
|
||||||
remove_frames) == 0)) {
|
|
||||||
Py_XINCREF(next);
|
Py_XINCREF(next);
|
||||||
Py_XSETREF(*outer_link, next);
|
Py_XSETREF(*outer_link, next);
|
||||||
prev_link = outer_link;
|
prev_link = outer_link;
|
||||||
|
|
|
@ -1503,7 +1503,7 @@ symtable_visit_expr(struct symtable *st, expr_ty e)
|
||||||
/* Special-case super: it counts as a use of __class__ */
|
/* Special-case super: it counts as a use of __class__ */
|
||||||
if (e->v.Name.ctx == Load &&
|
if (e->v.Name.ctx == Load &&
|
||||||
st->st_cur->ste_type == FunctionBlock &&
|
st->st_cur->ste_type == FunctionBlock &&
|
||||||
!PyUnicode_CompareWithASCIIString(e->v.Name.id, "super")) {
|
_PyUnicode_EqualToASCIIString(e->v.Name.id, "super")) {
|
||||||
if (!GET_IDENTIFIER(__class__) ||
|
if (!GET_IDENTIFIER(__class__) ||
|
||||||
!symtable_add_def(st, __class__, USE))
|
!symtable_add_def(st, __class__, USE))
|
||||||
VISIT_QUIT(st, 0);
|
VISIT_QUIT(st, 0);
|
||||||
|
@ -1652,7 +1652,7 @@ symtable_visit_alias(struct symtable *st, alias_ty a)
|
||||||
store_name = name;
|
store_name = name;
|
||||||
Py_INCREF(store_name);
|
Py_INCREF(store_name);
|
||||||
}
|
}
|
||||||
if (PyUnicode_CompareWithASCIIString(name, "*")) {
|
if (!_PyUnicode_EqualToASCIIString(name, "*")) {
|
||||||
int r = symtable_add_def(st, store_name, DEF_IMPORT);
|
int r = symtable_add_def(st, store_name, DEF_IMPORT);
|
||||||
Py_DECREF(store_name);
|
Py_DECREF(store_name);
|
||||||
return r;
|
return r;
|
||||||
|
|
Loading…
Reference in New Issue