util/ConcatString: return the end pointer

This commit is contained in:
Max Kellermann 2017-05-16 11:56:56 +02:00
parent a4b1633e11
commit 5e8f578e78
2 changed files with 6 additions and 7 deletions

View File

@ -88,8 +88,7 @@ t_xstrcatdup(Args&&... args)
const size_t total = FillLengths(lengths, args...);
char *p = (char *)xalloc(total + 1);
StringCat(p, lengths, args...);
p[total] = 0;
*StringCat(p, lengths, args...) = 0;
return p;
}

View File

@ -49,18 +49,18 @@ FillLengths(size_t *lengths, const char *a)
}
template<typename... Args>
void
char *
StringCat(char *p, const size_t *lengths, const char *a, Args&&... args)
{
StringCat(p, lengths, a);
StringCat(p + *lengths, lengths + 1, args...);
return StringCat(StringCat(p, lengths, a),
lengths + 1, args...);
}
template<>
void
char *
StringCat(char *p, const size_t *lengths, const char *a)
{
std::copy_n(a, *lengths, p);
return std::copy_n(a, *lengths, p);
}
#endif