Support empty words in Join()
diff --git a/quote.go b/quote.go
index f45f198..f6cacee 100644
--- a/quote.go
+++ b/quote.go
@@ -36,6 +36,12 @@
 	// everywhere.
 	origLen := buf.Len()
 
+	if len(word) == 0 {
+		// oops, no content
+		buf.WriteString("''")
+		return
+	}
+
 	cur, prev := word, word
 	atStart := true
 	for len(cur) > 0 {
diff --git a/quote_test.go b/quote_test.go
index d015d72..a4d2d82 100644
--- a/quote_test.go
+++ b/quote_test.go
@@ -5,7 +5,7 @@
 )
 
 func TestSimpleJoin(t *testing.T) {
-	for _, elem := range simpleTest {
+	for _, elem := range simpleJoinTest {
 		output := Join(elem.input...)
 		if output != elem.output {
 			t.Errorf("Input %q, got %q, expected %q", elem.input, output, elem.output)
@@ -13,7 +13,7 @@
 	}
 }
 
-var simpleTest = []struct {
+var simpleJoinTest = []struct {
 	input  []string
 	output string
 }{
@@ -24,4 +24,5 @@
 	{[]string{"don't", "you", "know", "the", "dewey", "decimal", "system?"}, "don\\'t you know the dewey decimal system\\?"},
 	{[]string{"~user", "u~ser", " ~user", "!~user"}, "\\~user u~ser ' ~user' \\!~user"},
 	{[]string{"foo*", "M{ovies,usic}", "ab[cd]", "%3"}, "foo\\* M\\{ovies,usic} ab\\[cd] %3"},
+	{[]string{"one", "", "three"}, "one '' three"},
 }