Mercurial > cpython-lru_cache-weakref
diff Objects/stringobject.c @ 12588:54274beb244d legacy-trunk
The methods islower(), isupper(), isspace(), isdigit() and istitle()
gave bogus results for chars in the range 128-255, because their
implementation was using signed characters. Fixed this by using
unsigned character pointers (as opposed to using Py_CHARMASK()).
| author | Guido van Rossum <guido@python.org> |
|---|---|
| date | Fri, 05 May 2000 20:44:24 +0000 |
| parents | 1c7c2dd1beb1 |
| children | 67233df13037 |
line wrap: on
line diff
--- a/Objects/stringobject.c Fri May 05 15:36:09 2000 +0000 +++ b/Objects/stringobject.c Fri May 05 20:44:24 2000 +0000 @@ -1910,8 +1910,8 @@ static PyObject* string_isspace(PyStringObject *self, PyObject *args) { - register const char *p = PyString_AS_STRING(self); - register const char *e; + register const unsigned char *p = (unsigned char *) PyString_AS_STRING(self); + register const unsigned char *e; if (!PyArg_NoArgs(args)) return NULL; @@ -1939,8 +1939,8 @@ static PyObject* string_isdigit(PyStringObject *self, PyObject *args) { - register const char *p = PyString_AS_STRING(self); - register const char *e; + register const unsigned char *p = (unsigned char *) PyString_AS_STRING(self); + register const unsigned char *e; if (!PyArg_NoArgs(args)) return NULL; @@ -1968,8 +1968,8 @@ static PyObject* string_islower(PyStringObject *self, PyObject *args) { - register const char *p = PyString_AS_STRING(self); - register const char *e; + register const unsigned char *p = (unsigned char *) PyString_AS_STRING(self); + register const unsigned char *e; int cased; if (!PyArg_NoArgs(args)) @@ -2000,8 +2000,8 @@ static PyObject* string_isupper(PyStringObject *self, PyObject *args) { - register const char *p = PyString_AS_STRING(self); - register const char *e; + register const unsigned char *p = (unsigned char *) PyString_AS_STRING(self); + register const unsigned char *e; int cased; if (!PyArg_NoArgs(args)) @@ -2033,8 +2033,8 @@ static PyObject* string_istitle(PyStringObject *self, PyObject *args) { - register const char *p = PyString_AS_STRING(self); - register const char *e; + register const unsigned char *p = (unsigned char *) PyString_AS_STRING(self); + register const unsigned char *e; int cased, previous_is_cased; if (!PyArg_NoArgs(args)) @@ -2048,7 +2048,7 @@ cased = 0; previous_is_cased = 0; for (; p < e; p++) { - register const char ch = *p; + register const unsigned char ch = *p; if (isupper(ch)) { if (previous_is_cased)
