Marc-Andre Lemburg <mal@lemburg.com>:
Added code so that .isXXX() testing returns 0 for emtpy strings.
This commit is contained in:
parent
bddf502a1f
commit
60bc809d9a
|
@ -1927,6 +1927,10 @@ string_isspace(PyStringObject *self, PyObject *args)
|
|||
isspace(*p))
|
||||
return PyInt_FromLong(1);
|
||||
|
||||
/* Special case for empty strings */
|
||||
if (PyString_GET_SIZE(self) == 0)
|
||||
return PyInt_FromLong(0);
|
||||
|
||||
e = p + PyString_GET_SIZE(self);
|
||||
for (; p < e; p++) {
|
||||
if (!isspace(*p))
|
||||
|
@ -1956,6 +1960,10 @@ string_isdigit(PyStringObject *self, PyObject *args)
|
|||
isdigit(*p))
|
||||
return PyInt_FromLong(1);
|
||||
|
||||
/* Special case for empty strings */
|
||||
if (PyString_GET_SIZE(self) == 0)
|
||||
return PyInt_FromLong(0);
|
||||
|
||||
e = p + PyString_GET_SIZE(self);
|
||||
for (; p < e; p++) {
|
||||
if (!isdigit(*p))
|
||||
|
@ -1985,6 +1993,10 @@ string_islower(PyStringObject *self, PyObject *args)
|
|||
if (PyString_GET_SIZE(self) == 1)
|
||||
return PyInt_FromLong(islower(*p) != 0);
|
||||
|
||||
/* Special case for empty strings */
|
||||
if (PyString_GET_SIZE(self) == 0)
|
||||
return PyInt_FromLong(0);
|
||||
|
||||
e = p + PyString_GET_SIZE(self);
|
||||
cased = 0;
|
||||
for (; p < e; p++) {
|
||||
|
@ -2017,6 +2029,10 @@ string_isupper(PyStringObject *self, PyObject *args)
|
|||
if (PyString_GET_SIZE(self) == 1)
|
||||
return PyInt_FromLong(isupper(*p) != 0);
|
||||
|
||||
/* Special case for empty strings */
|
||||
if (PyString_GET_SIZE(self) == 0)
|
||||
return PyInt_FromLong(0);
|
||||
|
||||
e = p + PyString_GET_SIZE(self);
|
||||
cased = 0;
|
||||
for (; p < e; p++) {
|
||||
|
@ -2050,6 +2066,10 @@ string_istitle(PyStringObject *self, PyObject *args)
|
|||
if (PyString_GET_SIZE(self) == 1)
|
||||
return PyInt_FromLong(isupper(*p) != 0);
|
||||
|
||||
/* Special case for empty strings */
|
||||
if (PyString_GET_SIZE(self) == 0)
|
||||
return PyInt_FromLong(0);
|
||||
|
||||
e = p + PyString_GET_SIZE(self);
|
||||
cased = 0;
|
||||
previous_is_cased = 0;
|
||||
|
|
|
@ -3306,6 +3306,10 @@ unicode_islower(PyUnicodeObject *self, PyObject *args)
|
|||
if (PyUnicode_GET_SIZE(self) == 1)
|
||||
return PyInt_FromLong(Py_UNICODE_ISLOWER(*p) != 0);
|
||||
|
||||
/* Special case for empty strings */
|
||||
if (PyString_GET_SIZE(self) == 0)
|
||||
return PyInt_FromLong(0);
|
||||
|
||||
e = p + PyUnicode_GET_SIZE(self);
|
||||
cased = 0;
|
||||
for (; p < e; p++) {
|
||||
|
@ -3339,6 +3343,10 @@ unicode_isupper(PyUnicodeObject *self, PyObject *args)
|
|||
if (PyUnicode_GET_SIZE(self) == 1)
|
||||
return PyInt_FromLong(Py_UNICODE_ISUPPER(*p) != 0);
|
||||
|
||||
/* Special case for empty strings */
|
||||
if (PyString_GET_SIZE(self) == 0)
|
||||
return PyInt_FromLong(0);
|
||||
|
||||
e = p + PyUnicode_GET_SIZE(self);
|
||||
cased = 0;
|
||||
for (; p < e; p++) {
|
||||
|
@ -3374,6 +3382,10 @@ unicode_istitle(PyUnicodeObject *self, PyObject *args)
|
|||
return PyInt_FromLong((Py_UNICODE_ISTITLE(*p) != 0) ||
|
||||
(Py_UNICODE_ISUPPER(*p) != 0));
|
||||
|
||||
/* Special case for empty strings */
|
||||
if (PyString_GET_SIZE(self) == 0)
|
||||
return PyInt_FromLong(0);
|
||||
|
||||
e = p + PyUnicode_GET_SIZE(self);
|
||||
cased = 0;
|
||||
previous_is_cased = 0;
|
||||
|
@ -3418,6 +3430,10 @@ unicode_isspace(PyUnicodeObject *self, PyObject *args)
|
|||
Py_UNICODE_ISSPACE(*p))
|
||||
return PyInt_FromLong(1);
|
||||
|
||||
/* Special case for empty strings */
|
||||
if (PyString_GET_SIZE(self) == 0)
|
||||
return PyInt_FromLong(0);
|
||||
|
||||
e = p + PyUnicode_GET_SIZE(self);
|
||||
for (; p < e; p++) {
|
||||
if (!Py_UNICODE_ISSPACE(*p))
|
||||
|
@ -3446,6 +3462,10 @@ unicode_isdecimal(PyUnicodeObject *self, PyObject *args)
|
|||
Py_UNICODE_ISDECIMAL(*p))
|
||||
return PyInt_FromLong(1);
|
||||
|
||||
/* Special case for empty strings */
|
||||
if (PyString_GET_SIZE(self) == 0)
|
||||
return PyInt_FromLong(0);
|
||||
|
||||
e = p + PyUnicode_GET_SIZE(self);
|
||||
for (; p < e; p++) {
|
||||
if (!Py_UNICODE_ISDECIMAL(*p))
|
||||
|
@ -3474,6 +3494,10 @@ unicode_isdigit(PyUnicodeObject *self, PyObject *args)
|
|||
Py_UNICODE_ISDIGIT(*p))
|
||||
return PyInt_FromLong(1);
|
||||
|
||||
/* Special case for empty strings */
|
||||
if (PyString_GET_SIZE(self) == 0)
|
||||
return PyInt_FromLong(0);
|
||||
|
||||
e = p + PyUnicode_GET_SIZE(self);
|
||||
for (; p < e; p++) {
|
||||
if (!Py_UNICODE_ISDIGIT(*p))
|
||||
|
@ -3502,6 +3526,10 @@ unicode_isnumeric(PyUnicodeObject *self, PyObject *args)
|
|||
Py_UNICODE_ISNUMERIC(*p))
|
||||
return PyInt_FromLong(1);
|
||||
|
||||
/* Special case for empty strings */
|
||||
if (PyString_GET_SIZE(self) == 0)
|
||||
return PyInt_FromLong(0);
|
||||
|
||||
e = p + PyUnicode_GET_SIZE(self);
|
||||
for (; p < e; p++) {
|
||||
if (!Py_UNICODE_ISNUMERIC(*p))
|
||||
|
|
Loading…
Reference in New Issue