diff --git a/bstest.c b/bstest.c
index ca4a485f8d8477316f90e04acfccdb1d07c1a0b9_YnN0ZXN0LmM=..9060ef180820b1cc9fb91129c2bc09387ebf8825_YnN0ZXN0LmM= 100644
--- a/bstest.c
+++ b/bstest.c
@@ -1664,6 +1664,18 @@
 			}
 			if (ret) break;
 		}
+
+		l = bsplit (&emptyBstring, 'x');
+		bdestroy (l->entry[0]);
+		l->qty--;
+		b = bjoin (l, &longBstring);
+		bstrListDestroy (l);
+		if (b->slen) {
+			printf ("\t\tfailure(%d) ", __LINE__);
+			ret++;
+		}
+		bdestroy (b);
+
 	}
 
 	printf ("\t# failures: %d\n", ret);
diff --git a/bstrlib.c b/bstrlib.c
index ca4a485f8d8477316f90e04acfccdb1d07c1a0b9_YnN0cmxpYi5j..9060ef180820b1cc9fb91129c2bc09387ebf8825_YnN0cmxpYi5j 100644
--- a/bstrlib.c
+++ b/bstrlib.c
@@ -2276,6 +2276,7 @@
 
 	if (bl == NULL || bl->qty < 0) return NULL;
 	if (sep != NULL && (sep->slen < 0 || sep->data == NULL)) return NULL;
+	if (bl->qty < 1) return bfromStatic ("");
 
 	for (i = 0, c = 1; i < bl->qty; i++) {
 		v = bl->entry[i]->slen;