Though it is clean to do like this: let _PyUnicode_JoinArray have `NULL` mean empty string, as it is more logical anyway; then PyUnicode_Join itself just needs to:
if (separator == NULL) {
separator = PyUnicode_FromOrdinal(' ');
/* check omitted */
res = _PyUnicode_JoinArray(separator, items, seqlen);
Py_DECREF(separator);
}
else {
res = _PyUnicode_JoinArray(separator, items, seqlen);
}
The NULL argument I guess isn't that common to pass to PyUnicode_Join (Python code especially would always have to pass in ' ' instead), so this shouldn't really affect performance for any case at all.