// we get the proper order back based on the hash code.
if v := reflect.ValueOf(value); v.Kind() == reflect.Slice {
// Build a temp *ResourceData to use for the conversion
+ tempAddr := addr[len(addr)-1:]
tempSchema := *schema
tempSchema.Type = TypeList
- tempSchemaMap := map[string]*Schema{addr[0]: &tempSchema}
+ tempSchemaMap := map[string]*Schema{tempAddr[0]: &tempSchema}
tempW := &MapFieldWriter{Schema: tempSchemaMap}
// Set the entire list, this lets us get sane values out of it
- if err := tempW.WriteField(addr, value); err != nil {
+ if err := tempW.WriteField(tempAddr, value); err != nil {
return err
}
}
for i := 0; i < v.Len(); i++ {
is := strconv.FormatInt(int64(i), 10)
- result, err := tempR.ReadField(append(addrCopy, is))
+ result, err := tempR.ReadField(append(tempAddr, is))
if err != nil {
return err
}
// problems when the old data isn't wiped first.
w.clearTree(addr)
+ if value.(*Set) == nil {
+ w.result[k+".#"] = "0"
+ return nil
+ }
+
for code, elem := range value.(*Set).m {
if err := w.set(append(addrCopy, code), elem); err != nil {
return err