mirror of
https://github.com/python/cpython.git
synced 2025-08-04 00:48:58 +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('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')
|
||||
|
@ -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'ab', False, u'ab', 0, 1)
|
||||
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', 8)
|
||||
|
|
|
@ -292,6 +292,7 @@ Soren Larsen
|
|||
Piers Lauder
|
||||
Chris Lawrence
|
||||
Christopher Lee
|
||||
Inyeol Lee
|
||||
Luc Lefebvre
|
||||
Kip Lehman
|
||||
Marc-Andre Lemburg
|
||||
|
|
|
@ -1536,7 +1536,7 @@ string_find_internal(PyStringObject *self, PyObject *args, int dir)
|
|||
}
|
||||
#ifdef Py_USING_UNICODE
|
||||
else if (PyUnicode_Check(subobj))
|
||||
return PyUnicode_Find((PyObject *)self, subobj, i, last, 1);
|
||||
return PyUnicode_Find((PyObject *)self, subobj, i, last, dir);
|
||||
#endif
|
||||
else if (PyObject_AsCharBuffer(subobj, &sub, &n))
|
||||
return -2;
|
||||
|
|
|
@ -2891,9 +2891,6 @@ int findstring(PyUnicodeObject *self,
|
|||
if (start < 0)
|
||||
start = 0;
|
||||
|
||||
if (substring->length == 0)
|
||||
return start;
|
||||
|
||||
if (end > self->length)
|
||||
end = self->length;
|
||||
if (end < 0)
|
||||
|
@ -2901,6 +2898,9 @@ int findstring(PyUnicodeObject *self,
|
|||
if (end < 0)
|
||||
end = 0;
|
||||
|
||||
if (substring->length == 0)
|
||||
return (direction > 0) ? start : end;
|
||||
|
||||
end -= substring->length;
|
||||
|
||||
if (direction < 0) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue