mirror of
https://github.com/python/cpython.git
synced 2024-11-27 11:55:13 +08:00
Fix my last change on PyUnicode_Join(): don't process separator if len==1
This commit is contained in:
parent
25a4b29c95
commit
acf47b807f
@ -9145,37 +9145,41 @@ PyUnicode_Join(PyObject *separator, PyObject *seq)
|
||||
|
||||
/* If singleton sequence with an exact Unicode, return that. */
|
||||
items = PySequence_Fast_ITEMS(fseq);
|
||||
if (seqlen == 1 && PyUnicode_CheckExact(items[0])) {
|
||||
res = items[0];
|
||||
Py_INCREF(res);
|
||||
Py_DECREF(fseq);
|
||||
return res;
|
||||
}
|
||||
|
||||
/* Set up sep and seplen */
|
||||
if (separator == NULL) {
|
||||
/* fall back to a blank space separator */
|
||||
sep = PyUnicode_FromOrdinal(' ');
|
||||
if (!sep)
|
||||
goto onError;
|
||||
maxchar = 32;
|
||||
if (seqlen == 1) {
|
||||
if (PyUnicode_CheckExact(items[0])) {
|
||||
res = items[0];
|
||||
Py_INCREF(res);
|
||||
Py_DECREF(fseq);
|
||||
return res;
|
||||
}
|
||||
sep = NULL;
|
||||
}
|
||||
else {
|
||||
if (!PyUnicode_Check(separator)) {
|
||||
PyErr_Format(PyExc_TypeError,
|
||||
"separator: expected str instance,"
|
||||
" %.80s found",
|
||||
Py_TYPE(separator)->tp_name);
|
||||
goto onError;
|
||||
/* Set up sep and seplen */
|
||||
if (separator == NULL) {
|
||||
/* fall back to a blank space separator */
|
||||
sep = PyUnicode_FromOrdinal(' ');
|
||||
if (!sep)
|
||||
goto onError;
|
||||
maxchar = 32;
|
||||
}
|
||||
else {
|
||||
if (!PyUnicode_Check(separator)) {
|
||||
PyErr_Format(PyExc_TypeError,
|
||||
"separator: expected str instance,"
|
||||
" %.80s found",
|
||||
Py_TYPE(separator)->tp_name);
|
||||
goto onError;
|
||||
}
|
||||
if (PyUnicode_READY(separator))
|
||||
goto onError;
|
||||
sep = separator;
|
||||
seplen = PyUnicode_GET_LENGTH(separator);
|
||||
maxchar = PyUnicode_MAX_CHAR_VALUE(separator);
|
||||
/* inc refcount to keep this code path symmetric with the
|
||||
above case of a blank separator */
|
||||
Py_INCREF(sep);
|
||||
}
|
||||
if (PyUnicode_READY(separator))
|
||||
goto onError;
|
||||
sep = separator;
|
||||
seplen = PyUnicode_GET_LENGTH(separator);
|
||||
maxchar = PyUnicode_MAX_CHAR_VALUE(separator);
|
||||
/* inc refcount to keep this code path symmetric with the
|
||||
above case of a blank separator */
|
||||
Py_INCREF(sep);
|
||||
}
|
||||
|
||||
/* There are at least two things to join, or else we have a subclass
|
||||
|
Loading…
Reference in New Issue
Block a user