Commit 185ac8a7 authored by Raymond Hettinger's avatar Raymond Hettinger

Fix endcase for str.rpartition()

parent f749693a
...@@ -771,8 +771,8 @@ The original string is returned if ...@@ -771,8 +771,8 @@ The original string is returned if
Split the string at the last occurrence of \var{sep}, and return Split the string at the last occurrence of \var{sep}, and return
a 3-tuple containing the part before the separator, the separator a 3-tuple containing the part before the separator, the separator
itself, and the part after the separator. If the separator is not itself, and the part after the separator. If the separator is not
found, return a 3-tuple containing the string itself, followed by found, return a 3-tuple containing two empty strings, followed by
two empty strings. the string itself.
\versionadded{2.5} \versionadded{2.5}
\end{methoddesc} \end{methoddesc}
......
...@@ -1069,7 +1069,7 @@ class MixinStrUnicodeUserStringTest: ...@@ -1069,7 +1069,7 @@ class MixinStrUnicodeUserStringTest:
# from raymond's original specification # from raymond's original specification
S = 'http://www.python.org' 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', '?')
self.checkequal(('', 'http://', 'www.python.org'), S, 'rpartition', 'http://') self.checkequal(('', 'http://', 'www.python.org'), S, 'rpartition', 'http://')
self.checkequal(('http://www.python.', 'org', ''), S, 'rpartition', 'org') self.checkequal(('http://www.python.', 'org', ''), S, 'rpartition', 'org')
......
...@@ -78,12 +78,12 @@ stringlib_rpartition( ...@@ -78,12 +78,12 @@ stringlib_rpartition(
} }
if (pos < 0) { if (pos < 0) {
Py_INCREF(str_obj);
PyTuple_SET_ITEM(out, 0, (PyObject*) str_obj);
Py_INCREF(STRINGLIB_EMPTY); Py_INCREF(STRINGLIB_EMPTY);
PyTuple_SET_ITEM(out, 1, (PyObject*) STRINGLIB_EMPTY); PyTuple_SET_ITEM(out, 0, (PyObject*) STRINGLIB_EMPTY);
Py_INCREF(STRINGLIB_EMPTY); Py_INCREF(STRINGLIB_EMPTY);
PyTuple_SET_ITEM(out, 2, (PyObject*) STRINGLIB_EMPTY); PyTuple_SET_ITEM(out, 1, (PyObject*) STRINGLIB_EMPTY);
Py_INCREF(str_obj);
PyTuple_SET_ITEM(out, 2, (PyObject*) str_obj);
return out; return out;
} }
......
...@@ -1543,11 +1543,11 @@ string_partition(PyStringObject *self, PyObject *sep_obj) ...@@ -1543,11 +1543,11 @@ string_partition(PyStringObject *self, PyObject *sep_obj)
} }
PyDoc_STRVAR(rpartition__doc__, PyDoc_STRVAR(rpartition__doc__,
"S.rpartition(sep) -> (head, sep, tail)\n\ "S.rpartition(sep) -> (tail, sep, head)\n\
\n\ \n\
Searches for the separator sep in S, starting at the end of S, and returns\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\ 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 * static PyObject *
string_rpartition(PyStringObject *self, PyObject *sep_obj) string_rpartition(PyStringObject *self, PyObject *sep_obj)
......
...@@ -6712,11 +6712,11 @@ unicode_partition(PyUnicodeObject *self, PyObject *separator) ...@@ -6712,11 +6712,11 @@ unicode_partition(PyUnicodeObject *self, PyObject *separator)
} }
PyDoc_STRVAR(rpartition__doc__, PyDoc_STRVAR(rpartition__doc__,
"S.rpartition(sep) -> (head, sep, tail)\n\ "S.rpartition(sep) -> (tail, sep, head)\n\
\n\ \n\
Searches for the separator sep in S, starting at the end of S, and returns\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\ 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* static PyObject*
unicode_rpartition(PyUnicodeObject *self, PyObject *separator) unicode_rpartition(PyUnicodeObject *self, PyObject *separator)
......
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