Kaydet (Commit) 76afbd9a authored tarafından Guido van Rossum's avatar Guido van Rossum

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.
üst c230b0e1
......@@ -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) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment