Unicode replace() method with empty pattern argument should fail, like

it does for 8-bit strings.
This commit is contained in:
Guido van Rossum 2002-08-09 15:36:48 +00:00
parent 3bc3f28dbe
commit f36921c4b0
2 changed files with 11 additions and 0 deletions

View File

@ -206,6 +206,12 @@ def __getitem__(self, i): return self.seq[i]
test('replace', u'one!two!three!', u'one@two@three@', u'!', u'@')
test('replace', u'one!two!three!', u'one!two!three!', u'x', u'@')
test('replace', u'one!two!three!', u'one!two!three!', u'x', u'@', 2)
try:
u"abc".replace(u"", u"x")
except ValueError:
pass
else:
raise TestFailed, "u.replace('', ...) should raise ValueError"
test('startswith', u'hello', True, u'he')
test('startswith', u'hello', True, u'hello')

View File

@ -3455,6 +3455,11 @@ PyObject *replace(PyUnicodeObject *self,
{
PyUnicodeObject *u;
if (str1->length == 0) {
PyErr_SetString(PyExc_ValueError, "empty pattern string");
return NULL;
}
if (maxcount < 0)
maxcount = INT_MAX;