minor update for error handling
diff --git a/set.go b/set.go
index e85ec15..4c4d2bd 100644
--- a/set.go
+++ b/set.go
@@ -192,7 +192,9 @@
return types.ScanFully(d, val, 'v')
}
-func newValue(sect string, vCfg reflect.Value, vType reflect.Type) (reflect.Value, error) {
+func newValue(c *warnings.Collector, sect string, vCfg reflect.Value,
+ vType reflect.Type) (reflect.Value, error) {
+ //
pv := reflect.New(vType)
dfltName := "default-" + sect
dfltField, _ := fieldFold(vCfg, dfltName)
@@ -200,13 +202,11 @@
if dfltField.IsValid() {
b := bytes.NewBuffer(nil)
ge := gob.NewEncoder(b)
- err = ge.EncodeValue(dfltField)
- if err != nil {
+ if err = c.Collect(ge.EncodeValue(dfltField)); err != nil {
return pv, err
}
gd := gob.NewDecoder(bytes.NewReader(b.Bytes()))
- err = gd.DecodeValue(pv.Elem())
- if err != nil {
+ if err = c.Collect(gd.DecodeValue(pv.Elem())); err != nil {
return pv, err
}
}
@@ -246,8 +246,7 @@
if !pv.IsValid() {
vType := vSect.Type().Elem().Elem()
var err error
- pv, err = newValue(sect, vCfg, vType)
- if err != nil {
+ if pv, err = newValue(c, sect, vCfg, vType); err != nil {
return err
}
vSect.SetMapIndex(k, pv)