From a16cf1ee123126a8274bb216cf824e277e8b9b97 Mon Sep 17 00:00:00 2001 From: David Garcia Quintas Date: Tue, 7 Jul 2015 17:02:37 -0700 Subject: [PATCH] PR comments + some more tests. --- src/core/support/string.c | 6 +++--- test/core/support/string_test.c | 7 +++++++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/core/support/string.c b/src/core/support/string.c index f85f656da43..8f59945c59a 100644 --- a/src/core/support/string.c +++ b/src/core/support/string.c @@ -173,12 +173,12 @@ char *gpr_strjoin_sep(const char **strs, size_t nstrs, const char *sep, out_length = 0; for (i = 0; i < nstrs; i++) { const size_t slen = strlen(strs[i]); - memcpy(out + out_length, strs[i], slen); - out_length += slen; - if (sep_len > 0 && nstrs > 0 && i < nstrs - 1) { + if (i != 0) { memcpy(out + out_length, sep, sep_len); out_length += sep_len; } + memcpy(out + out_length, strs[i], slen); + out_length += slen; } out[out_length] = 0; if (final_length != NULL) { diff --git a/test/core/support/string_test.c b/test/core/support/string_test.c index 24e28d68dd6..30d97de1a53 100644 --- a/test/core/support/string_test.c +++ b/test/core/support/string_test.c @@ -176,10 +176,17 @@ static void test_strjoin_sep(void) { GPR_ASSERT(0 == strcmp("one, two, three, four", joined)); gpr_free(joined); + /* empty separator */ + joined = gpr_strjoin_sep(parts, 4, "", &joined_len); + GPR_ASSERT(0 == strcmp("onetwothreefour", joined)); + gpr_free(joined); + + /* degenerated case specifying zero input parts */ joined = gpr_strjoin_sep(parts, 0, ", ", &joined_len); GPR_ASSERT(0 == strcmp("", joined)); gpr_free(joined); + /* single part should have no separator */ joined = gpr_strjoin_sep(parts, 1, ", ", &joined_len); GPR_ASSERT(0 == strcmp("one", joined)); gpr_free(joined);