From f870eff5f90cad94e50ba66514dc061328aaf2a4 Mon Sep 17 00:00:00 2001 From: Greg Osuri Date: Fri, 16 Jan 2015 00:16:38 -0800 Subject: [PATCH 1/2] core: fix for #813 - added a gaurd for interface conversion --- helper/schema/field_writer_map.go | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/helper/schema/field_writer_map.go b/helper/schema/field_writer_map.go index a9b38ac45c..5b19a03115 100644 --- a/helper/schema/field_writer_map.go +++ b/helper/schema/field_writer_map.go @@ -293,14 +293,15 @@ func (w *MapFieldWriter) setSet( } k := strings.Join(addr, ".") - for code, elem := range value.(*Set).m { - codeStr := strconv.FormatInt(int64(code), 10) - if err := w.set(append(addrCopy, codeStr), elem); err != nil { - return err + + if value != nil { + for code, elem := range value.(*Set).m { + codeStr := strconv.FormatInt(int64(code), 10) + if err := w.set(append(addrCopy, codeStr), elem); err != nil { + return err + } } + w.result[k+".#"] = strconv.Itoa(value.(*Set).Len()) } - - w.result[k+".#"] = strconv.Itoa(value.(*Set).Len()) return nil - } From 2769d7cf9c909692050eb18f337734b452b82735 Mon Sep 17 00:00:00 2001 From: Greg Osuri Date: Fri, 16 Jan 2015 03:43:57 -0800 Subject: [PATCH 2/2] Fixes #813: Ensuring set count (.#) is written to the state --- helper/schema/field_writer_map.go | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/helper/schema/field_writer_map.go b/helper/schema/field_writer_map.go index 5b19a03115..ad9980e104 100644 --- a/helper/schema/field_writer_map.go +++ b/helper/schema/field_writer_map.go @@ -294,14 +294,18 @@ func (w *MapFieldWriter) setSet( k := strings.Join(addr, ".") - if value != nil { - for code, elem := range value.(*Set).m { - codeStr := strconv.FormatInt(int64(code), 10) - if err := w.set(append(addrCopy, codeStr), elem); err != nil { - return err - } - } - w.result[k+".#"] = strconv.Itoa(value.(*Set).Len()) + if value == nil { + w.result[k+".#"] = "0" + return nil } + + for code, elem := range value.(*Set).m { + codeStr := strconv.FormatInt(int64(code), 10) + if err := w.set(append(addrCopy, codeStr), elem); err != nil { + return err + } + } + + w.result[k+".#"] = strconv.Itoa(value.(*Set).Len()) return nil }