Check for nil in viper.Sub
Fixes #191
diff --git a/viper.go b/viper.go
index 0fbd051..6964041 100644
--- a/viper.go
+++ b/viper.go
@@ -532,6 +532,10 @@
func (v *Viper) Sub(key string) *Viper {
subv := New()
data := v.Get(key)
+ if data == nil {
+ return nil
+ }
+
if reflect.TypeOf(data).Kind() == reflect.Map {
subv.config = cast.ToStringMap(data)
return subv
diff --git a/viper_test.go b/viper_test.go
index 8558f92..72f695e 100644
--- a/viper_test.go
+++ b/viper_test.go
@@ -760,6 +760,9 @@
subv = v.Sub("clothing.pants.size")
assert.Equal(t, subv, (*Viper)(nil))
+
+ subv = v.Sub("missing.key")
+ assert.Equal(t, subv, (*Viper)(nil))
}
var yamlMergeExampleTgt = []byte(`