From 1d96373a54c25bf9a19ca60203bf2fe13fcd094d Mon Sep 17 00:00:00 2001 From: Armon Dadgar Date: Fri, 19 Sep 2014 16:15:52 -0700 Subject: [PATCH] terraform: deepcopy should not alloc when nil --- terraform/state.go | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/terraform/state.go b/terraform/state.go index d018362b8..327fd8351 100644 --- a/terraform/state.go +++ b/terraform/state.go @@ -94,6 +94,9 @@ func (s *State) deepcopy() *State { // prune is used to remove any resources that are no longer required func (s *State) prune() { + if s == nil { + return + } for _, mod := range s.Modules { mod.prune() } @@ -391,12 +394,14 @@ func (i *InstanceState) deepcopy() *InstanceState { return nil } n := &InstanceState{ - ID: i.ID, - Attributes: make(map[string]string, len(i.Attributes)), - Ephemeral: *i.Ephemeral.deepcopy(), + ID: i.ID, + Ephemeral: *i.Ephemeral.deepcopy(), } - for k, v := range i.Attributes { - n.Attributes[k] = v + if i.Attributes != nil { + n.Attributes = make(map[string]string, len(i.Attributes)) + for k, v := range i.Attributes { + n.Attributes[k] = v + } } return n } @@ -489,11 +494,12 @@ func (e *EphemeralState) deepcopy() *EphemeralState { if e == nil { return nil } - n := &EphemeralState{ - ConnInfo: make(map[string]string, len(e.ConnInfo)), - } - for k, v := range e.ConnInfo { - n.ConnInfo[k] = v + n := &EphemeralState{} + if e.ConnInfo != nil { + n.ConnInfo = make(map[string]string, len(e.ConnInfo)) + for k, v := range e.ConnInfo { + n.ConnInfo[k] = v + } } return n }