From a16cf1ee123126a8274bb216cf824e277e8b9b97 Mon Sep 17 00:00:00 2001
From: David Garcia Quintas <dgq@google.com>
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 f85f656da4..8f59945c59 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 24e28d68dd..30d97de1a5 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);
-- 
GitLab