mirror of
https://github.com/python/cpython.git
synced 2025-09-27 18:59:43 +00:00
Fix some endcase bugs in unicode rfind()/rindex() and endswith().
These were reported and fixed by Inyeol Lee in SF bug 595350. The endswith() bug was already fixed in 2.3, but this adds some more test cases.
This commit is contained in:
parent
c230b0e1f9
commit
76afbd9aa4
4 changed files with 11 additions and 4 deletions
|
@ -107,6 +107,10 @@ test('find', u'abcdefghiabc', 9, u'abc', 1)
|
||||||
test('find', u'abcdefghiabc', -1, u'def', 4)
|
test('find', u'abcdefghiabc', -1, u'def', 4)
|
||||||
|
|
||||||
test('rfind', u'abcdefghiabc', 9, u'abc')
|
test('rfind', u'abcdefghiabc', 9, u'abc')
|
||||||
|
test('rfind', 'abcdefghiabc', 9, u'abc')
|
||||||
|
test('rfind', 'abcdefghiabc', 12, u'')
|
||||||
|
test('rfind', u'abcdefghiabc', 12, '')
|
||||||
|
test('rfind', u'abcdefghiabc', 12, u'')
|
||||||
|
|
||||||
test('lower', u'HeLLo', u'hello')
|
test('lower', u'HeLLo', u'hello')
|
||||||
test('lower', u'hello', u'hello')
|
test('lower', u'hello', u'hello')
|
||||||
|
@ -241,6 +245,8 @@ test('endswith', u'helloworld', False, u'lowo', 4, 7)
|
||||||
test('endswith', u'helloworld', False, u'lowo', 3, 8)
|
test('endswith', u'helloworld', False, u'lowo', 3, 8)
|
||||||
test('endswith', u'ab', False, u'ab', 0, 1)
|
test('endswith', u'ab', False, u'ab', 0, 1)
|
||||||
test('endswith', u'ab', False, u'ab', 0, 0)
|
test('endswith', u'ab', False, u'ab', 0, 0)
|
||||||
|
test('endswith', 'helloworld', True, u'd')
|
||||||
|
test('endswith', 'helloworld', False, u'l')
|
||||||
|
|
||||||
test('expandtabs', u'abc\rab\tdef\ng\thi', u'abc\rab def\ng hi')
|
test('expandtabs', u'abc\rab\tdef\ng\thi', u'abc\rab def\ng hi')
|
||||||
test('expandtabs', u'abc\rab\tdef\ng\thi', u'abc\rab def\ng hi', 8)
|
test('expandtabs', u'abc\rab\tdef\ng\thi', u'abc\rab def\ng hi', 8)
|
||||||
|
|
|
@ -292,6 +292,7 @@ Soren Larsen
|
||||||
Piers Lauder
|
Piers Lauder
|
||||||
Chris Lawrence
|
Chris Lawrence
|
||||||
Christopher Lee
|
Christopher Lee
|
||||||
|
Inyeol Lee
|
||||||
Luc Lefebvre
|
Luc Lefebvre
|
||||||
Kip Lehman
|
Kip Lehman
|
||||||
Marc-Andre Lemburg
|
Marc-Andre Lemburg
|
||||||
|
|
|
@ -1536,7 +1536,7 @@ string_find_internal(PyStringObject *self, PyObject *args, int dir)
|
||||||
}
|
}
|
||||||
#ifdef Py_USING_UNICODE
|
#ifdef Py_USING_UNICODE
|
||||||
else if (PyUnicode_Check(subobj))
|
else if (PyUnicode_Check(subobj))
|
||||||
return PyUnicode_Find((PyObject *)self, subobj, i, last, 1);
|
return PyUnicode_Find((PyObject *)self, subobj, i, last, dir);
|
||||||
#endif
|
#endif
|
||||||
else if (PyObject_AsCharBuffer(subobj, &sub, &n))
|
else if (PyObject_AsCharBuffer(subobj, &sub, &n))
|
||||||
return -2;
|
return -2;
|
||||||
|
|
|
@ -2891,9 +2891,6 @@ int findstring(PyUnicodeObject *self,
|
||||||
if (start < 0)
|
if (start < 0)
|
||||||
start = 0;
|
start = 0;
|
||||||
|
|
||||||
if (substring->length == 0)
|
|
||||||
return start;
|
|
||||||
|
|
||||||
if (end > self->length)
|
if (end > self->length)
|
||||||
end = self->length;
|
end = self->length;
|
||||||
if (end < 0)
|
if (end < 0)
|
||||||
|
@ -2901,6 +2898,9 @@ int findstring(PyUnicodeObject *self,
|
||||||
if (end < 0)
|
if (end < 0)
|
||||||
end = 0;
|
end = 0;
|
||||||
|
|
||||||
|
if (substring->length == 0)
|
||||||
|
return (direction > 0) ? start : end;
|
||||||
|
|
||||||
end -= substring->length;
|
end -= substring->length;
|
||||||
|
|
||||||
if (direction < 0) {
|
if (direction < 0) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue