static UniqueChars Join(const FragmentVector& fragments, const char* separator = "") { const size_t separatorLength = strlen(separator); size_t length = 0; for (size_t i = 0; i < fragments.length(); ++i) { length += fragments[i] ? strlen(fragments[i].get()) : 0; if (i < (fragments.length() - 1)) length += separatorLength; } char* joined = js_pod_malloc<char>(length + 1); joined[length] = '\0'; char* cursor = joined; for (size_t i = 0; i < fragments.length(); ++i) { if (fragments[i]) strcpy(cursor, fragments[i].get()); cursor += fragments[i] ? strlen(fragments[i].get()) : 0; if (i < (fragments.length() - 1)) { if (separatorLength) strcpy(cursor, separator); cursor += separatorLength; } } return UniqueChars(joined); }
static UniqueChars Join(const FragmentVector &fragments) { size_t length = 0; for (size_t i = 0; i < fragments.length(); ++i) length += fragments[i] ? strlen(fragments[i].get()) : 0; char *joined = js_pod_malloc<char>(length + 1); joined[length] = '\0'; char *cursor = joined; for (size_t i = 0; i < fragments.length(); ++i) { if (fragments[i]) strcpy(cursor, fragments[i].get()); cursor += fragments[i] ? strlen(fragments[i].get()) : 0; } return UniqueChars(joined); }