mirror of
https://github.com/python/cpython.git
synced 2025-12-04 00:30:19 +00:00
bpo-28029: Make "".replace("", s, n) returning s for any n != 0. (GH-16981)
This commit is contained in:
parent
25fc088607
commit
865c3b257f
5 changed files with 18 additions and 9 deletions
|
|
@ -680,9 +680,13 @@ stringlib_replace(PyObject *self,
|
|||
const char *to_s, Py_ssize_t to_len,
|
||||
Py_ssize_t maxcount)
|
||||
{
|
||||
if (STRINGLIB_LEN(self) < from_len) {
|
||||
/* nothing to do; return the original bytes */
|
||||
return return_self(self);
|
||||
}
|
||||
if (maxcount < 0) {
|
||||
maxcount = PY_SSIZE_T_MAX;
|
||||
} else if (maxcount == 0 || STRINGLIB_LEN(self) == 0) {
|
||||
} else if (maxcount == 0) {
|
||||
/* nothing to do; return the original bytes */
|
||||
return return_self(self);
|
||||
}
|
||||
|
|
@ -699,13 +703,6 @@ stringlib_replace(PyObject *self,
|
|||
return stringlib_replace_interleave(self, to_s, to_len, maxcount);
|
||||
}
|
||||
|
||||
/* Except for b"".replace(b"", b"A") == b"A" there is no way beyond this */
|
||||
/* point for an empty self bytes to generate a non-empty bytes */
|
||||
/* Special case so the remaining code always gets a non-empty bytes */
|
||||
if (STRINGLIB_LEN(self) == 0) {
|
||||
return return_self(self);
|
||||
}
|
||||
|
||||
if (to_len == 0) {
|
||||
/* delete all occurrences of 'from' bytes */
|
||||
if (from_len == 1) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue