Ensure values aren't nil before decoding.

This commit is contained in:
Alec Thomas
2020-12-04 16:14:16 +11:00
parent 5a9b3ae012
commit 3d57e73d11
4 changed files with 43 additions and 3 deletions
+8
View File
@@ -551,6 +551,14 @@ func (c *Context) getValue(value *Value) reflect.Value {
v, ok := c.values[value]
if !ok {
v = reflect.New(value.Target.Type()).Elem()
switch v.Kind() {
case reflect.Ptr:
v.Set(reflect.New(v.Type().Elem()))
case reflect.Slice:
v.Set(reflect.MakeSlice(v.Type(), 0, 0))
case reflect.Map:
v.Set(reflect.MakeMap(v.Type()))
}
c.values[value] = v
}
return v