your patch changes the behaviour of join on non-standard sequences.
if you use join on a long synthetic sequence, your new version may run out of memory where the old one worked just fine.
looking again, this was obviously only true for the unicode version (which uses PySequence_GetItem), not for the 8-bit string version (which uses the PySequence_Fast API).
maybe we should change the 8-bit implementation instead?
if not, +1.