mirror of
https://github.com/python/cpython.git
synced 2025-08-22 09:45:06 +00:00
Fix str.rpartition(sep) when sep is not found in str.
Partially from SF patch #1551339, but also taken from head.
This commit is contained in:
parent
8dc71f2161
commit
29a5fdb7ca
6 changed files with 14 additions and 11 deletions
|
@ -771,8 +771,8 @@ The original string is returned if
|
|||
Split the string at the last occurrence of \var{sep}, and return
|
||||
a 3-tuple containing the part before the separator, the separator
|
||||
itself, and the part after the separator. If the separator is not
|
||||
found, return a 3-tuple containing the string itself, followed by
|
||||
two empty strings.
|
||||
found, return a 3-tuple containing two empty strings, followed by
|
||||
the string itself.
|
||||
\versionadded{2.5}
|
||||
\end{methoddesc}
|
||||
|
||||
|
|
|
@ -1069,7 +1069,7 @@ class MixinStrUnicodeUserStringTest:
|
|||
# from raymond's original specification
|
||||
S = 'http://www.python.org'
|
||||
self.checkequal(('http', '://', 'www.python.org'), S, 'rpartition', '://')
|
||||
self.checkequal(('http://www.python.org', '', ''), S, 'rpartition', '?')
|
||||
self.checkequal(('', '', 'http://www.python.org'), S, 'rpartition', '?')
|
||||
self.checkequal(('', 'http://', 'www.python.org'), S, 'rpartition', 'http://')
|
||||
self.checkequal(('http://www.python.', 'org', ''), S, 'rpartition', 'org')
|
||||
|
||||
|
|
|
@ -27,6 +27,9 @@ Core and builtins
|
|||
|
||||
- Patch #1546288: fix seg fault in dict_equal due to ref counting bug.
|
||||
|
||||
- The return tuple from str.rpartition(sep) is (tail, sep, head) where
|
||||
head is the original string if sep was not found.
|
||||
|
||||
|
||||
Library
|
||||
-------
|
||||
|
|
|
@ -78,12 +78,12 @@ stringlib_rpartition(
|
|||
}
|
||||
|
||||
if (pos < 0) {
|
||||
Py_INCREF(str_obj);
|
||||
PyTuple_SET_ITEM(out, 0, (PyObject*) str_obj);
|
||||
Py_INCREF(STRINGLIB_EMPTY);
|
||||
PyTuple_SET_ITEM(out, 0, (PyObject*) STRINGLIB_EMPTY);
|
||||
Py_INCREF(STRINGLIB_EMPTY);
|
||||
PyTuple_SET_ITEM(out, 1, (PyObject*) STRINGLIB_EMPTY);
|
||||
Py_INCREF(STRINGLIB_EMPTY);
|
||||
PyTuple_SET_ITEM(out, 2, (PyObject*) STRINGLIB_EMPTY);
|
||||
Py_INCREF(str_obj);
|
||||
PyTuple_SET_ITEM(out, 2, (PyObject*) str_obj);
|
||||
return out;
|
||||
}
|
||||
|
||||
|
|
|
@ -1543,11 +1543,11 @@ string_partition(PyStringObject *self, PyObject *sep_obj)
|
|||
}
|
||||
|
||||
PyDoc_STRVAR(rpartition__doc__,
|
||||
"S.rpartition(sep) -> (head, sep, tail)\n\
|
||||
"S.rpartition(sep) -> (tail, sep, head)\n\
|
||||
\n\
|
||||
Searches for the separator sep in S, starting at the end of S, and returns\n\
|
||||
the part before it, the separator itself, and the part after it. If the\n\
|
||||
separator is not found, returns S and two empty strings.");
|
||||
separator is not found, returns two empty strings and S.");
|
||||
|
||||
static PyObject *
|
||||
string_rpartition(PyStringObject *self, PyObject *sep_obj)
|
||||
|
|
|
@ -6708,11 +6708,11 @@ unicode_partition(PyUnicodeObject *self, PyObject *separator)
|
|||
}
|
||||
|
||||
PyDoc_STRVAR(rpartition__doc__,
|
||||
"S.rpartition(sep) -> (head, sep, tail)\n\
|
||||
"S.rpartition(sep) -> (tail, sep, head)\n\
|
||||
\n\
|
||||
Searches for the separator sep in S, starting at the end of S, and returns\n\
|
||||
the part before it, the separator itself, and the part after it. If the\n\
|
||||
separator is not found, returns S and two empty strings.");
|
||||
separator is not found, returns two empty strings and S.");
|
||||
|
||||
static PyObject*
|
||||
unicode_rpartition(PyUnicodeObject *self, PyObject *separator)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue