diff -r c2f74b8f6b7f -r 41a5d815d2c1 mercurial/templatefuncs.py --- a/mercurial/templatefuncs.py Sun Mar 18 23:24:50 2018 +0900 +++ b/mercurial/templatefuncs.py Sat Mar 17 21:42:27 2018 +0900 @@ -324,14 +324,8 @@ joiner = " " if len(args) > 1: joiner = evalstring(context, mapping, args[1]) - - first = True - for x in pycompat.maybebytestr(joinset): - if first: - first = False - else: - yield joiner - yield joinfmt(x) + itemiter = (joinfmt(x) for x in pycompat.maybebytestr(joinset)) + return templateutil.joinitems(itemiter, joiner) @templatefunc('label(label, expr)') def label(context, mapping, args):