Commit 1ee77d9b authored by Tim Peters's avatar Tim Peters

Guido has Spoken. Restore strop.replace()'s treatment of a 0 count as

meaning infinity -- but at least warn about it in the code!  I pissed
away a couple hours on this today, and don't wish the same on the next
in line.
Bugfix candidate.
parent da45d55a
......@@ -77,7 +77,9 @@ test('replace', 'one!two!three!', 'one@two!three!', '!', '@', 1)
test('replace', 'one!two!three!', 'one@two@three!', '!', '@', 2)
test('replace', 'one!two!three!', 'one@two@three@', '!', '@', 3)
test('replace', 'one!two!three!', 'one@two@three@', '!', '@', 4)
test('replace', 'one!two!three!', 'one!two!three!', '!', '@', 0)
# CAUTION: a replace count of 0 means infinity only to strop, not to the
# string .replace() method or to the string.replace() function.
test('replace', 'one!two!three!', 'one@two@three@', '!', '@', 0)
test('replace', 'one!two!three!', 'one@two@three@', '!', '@')
test('replace', 'one!two!three!', 'one!two!three!', 'x', '@')
test('replace', 'one!two!three!', 'one!two!three!', 'x', '@', 2)
......
......@@ -1132,6 +1132,12 @@ strop_replace(PyObject *self, PyObject *args)
PyErr_SetString(PyExc_ValueError, "empty pattern string");
return NULL;
}
/* CAUTION: strop treats a replace count of 0 as infinity, unlke
* current (2.1) string.py and string methods. Preserve this for
* ... well, hard to say for what <wink>.
*/
if (count == 0)
count = -1;
new_s = mymemreplace(str,len,pat,pat_len,sub,sub_len,count,&out_len);
if (new_s == NULL) {
PyErr_NoMemory();
......
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