| 833 | } |
| 834 | |
| 835 | func (d *Decoder) decodeMapFromSlice(name string, dataVal reflect.Value, val reflect.Value, valMap reflect.Value) error { |
| 836 | // Special case for BC reasons (covered by tests) |
| 837 | if dataVal.Len() == 0 { |
| 838 | val.Set(valMap) |
| 839 | return nil |
| 840 | } |
| 841 | |
| 842 | for i := 0; i < dataVal.Len(); i++ { |
| 843 | err := d.decode( |
| 844 | name+"["+strconv.Itoa(i)+"]", |
| 845 | dataVal.Index(i).Interface(), val) |
| 846 | if err != nil { |
| 847 | return err |
| 848 | } |
| 849 | } |
| 850 | |
| 851 | return nil |
| 852 | } |
| 853 | |
| 854 | func (d *Decoder) decodeMapFromMap(name string, dataVal reflect.Value, val reflect.Value, valMap reflect.Value) error { |
| 855 | valType := val.Type() |