From 1b8617cef08db534c752e7174c478dac6ca228a1 Mon Sep 17 00:00:00 2001 From: James Bardin Date: Thu, 20 Dec 2018 13:06:53 -0500 Subject: [PATCH] don't attempt to decode empty changes values An empty DynamicValue can't be decoded but indicates no state, so just return a NullVal. --- plans/changes_src.go | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/plans/changes_src.go b/plans/changes_src.go index f2782ac3c..90153ea7b 100644 --- a/plans/changes_src.go +++ b/plans/changes_src.go @@ -166,13 +166,21 @@ type ChangeSrc struct { // to call the corresponding Decode method of that struct rather than working // directly with its embedded Change. func (cs *ChangeSrc) Decode(ty cty.Type) (*Change, error) { - before, err := cs.Before.Decode(ty) - if err != nil { - return nil, fmt.Errorf("error decoding 'before' value: %s", err) + var err error + before := cty.NullVal(ty) + after := cty.NullVal(ty) + + if len(cs.Before) > 0 { + before, err = cs.Before.Decode(ty) + if err != nil { + return nil, fmt.Errorf("error decoding 'before' value: %s", err) + } } - after, err := cs.After.Decode(ty) - if err != nil { - return nil, fmt.Errorf("error decoding 'after' value: %s", err) + if len(cs.After) > 0 { + after, err = cs.After.Decode(ty) + if err != nil { + return nil, fmt.Errorf("error decoding 'after' value: %s", err) + } } return &Change{ Action: cs.Action,