diff --git a/flag.go b/flag.go
index 865259b..eba5fd9 100644
--- a/flag.go
+++ b/flag.go
@@ -262,12 +262,12 @@
 func (f *FlagSet) getFlagType(name string, ftype string, convFunc func(sval string) (interface{}, error)) (interface{}, error) {
 	flag := f.Lookup(name)
 	if flag == nil {
-		err := fmt.Errorf("flag accessed but not defined: %s\n", name)
+		err := fmt.Errorf("flag accessed but not defined: %s", name)
 		return nil, err
 	}
 
 	if flag.Value.Type() != ftype {
-		err := fmt.Errorf("trying to get %s value of flag of type %s\n", ftype, flag.Value.Type())
+		err := fmt.Errorf("trying to get %s value of flag of type %s", ftype, flag.Value.Type())
 		return nil, err
 	}
 
diff --git a/int_slice.go b/int_slice.go
index 69e7e7c..b28353d 100644
--- a/int_slice.go
+++ b/int_slice.go
@@ -43,6 +43,10 @@
 
 func intSliceConv(val string) (interface{}, error) {
 	val = strings.Trim(val, "[]")
+	// Empty string would cause a slice with one (empty) entry
+	if len(val) == 0 {
+		return []int{}, nil
+	}
 	ss := strings.Split(val, ",")
 	out := make([]int, len(ss))
 	for i, d := range ss {
diff --git a/int_slice_test.go b/int_slice_test.go
index 927e7f4..32c7cd7 100644
--- a/int_slice_test.go
+++ b/int_slice_test.go
@@ -17,6 +17,23 @@
 	return f
 }
 
+func TestEmptyIS(t *testing.T) {
+	var is []int
+	f := setUpISFlagSet(&is)
+	err := f.Parse([]string{})
+	if err != nil {
+		t.Fatal("expected no error; got", err)
+	}
+
+	getIS, err := f.GetIntSlice("is")
+	if err != nil {
+		t.Fatal("got an error from GetStringSlice():", err)
+	}
+	if len(getIS) != 0 {
+		t.Fatalf("got is %v with len=%d but expected length=0", getIS, len(getIS))
+	}
+}
+
 func TestIS(t *testing.T) {
 	var is []int
 	f := setUpISFlagSet(&is)
diff --git a/string_slice.go b/string_slice.go
index 20d94ba..2037bd8 100644
--- a/string_slice.go
+++ b/string_slice.go
@@ -25,6 +25,10 @@
 
 func stringSliceConv(sval string) (interface{}, error) {
 	sval = strings.Trim(sval, "[]")
+	// An empty string would cause a slice with one (empty) string
+	if len(sval) == 0 {
+		return []string{}, nil
+	}
 	v := strings.Split(sval, ",")
 	return v, nil
 }
diff --git a/string_slice_test.go b/string_slice_test.go
index d5c0d03..63eb9de 100644
--- a/string_slice_test.go
+++ b/string_slice_test.go
@@ -16,6 +16,23 @@
 	return f
 }
 
+func TestEmptySS(t *testing.T) {
+	var ss []string
+	f := setUpSSFlagSet(&ss)
+	err := f.Parse([]string{})
+	if err != nil {
+		t.Fatal("expected no error; got", err)
+	}
+
+	getSS, err := f.GetStringSlice("ss")
+	if err != nil {
+		t.Fatal("got an error from GetStringSlice():", err)
+	}
+	if len(getSS) != 0 {
+		t.Fatalf("got ss %v with len=%d but expected length=0", getSS, len(getSS))
+	}
+}
+
 func TestSS(t *testing.T) {
 	var ss []string
 	f := setUpSSFlagSet(&ss)
