diff --git a/report/metadata_template.go b/report/metadata_template.go index 16d99af31..42d872b21 100644 --- a/report/metadata_template.go +++ b/report/metadata_template.go @@ -124,11 +124,14 @@ func (e MetadataTemplates) Copy() MetadataTemplates { // Merge merges two sets of MetadataTemplates so far just ignores based // on duplicate id key func (e MetadataTemplates) Merge(other MetadataTemplates) MetadataTemplates { - result := e.Copy() + if e == nil && other == nil { + return nil + } + result := make(MetadataTemplates, len(e)) + for k, v := range e { + result[k] = v + } for k, v := range other { - if result == nil { - result = MetadataTemplates{} - } if existing, ok := result[k]; !ok || existing.Priority < v.Priority { result[k] = v } diff --git a/report/metric_template.go b/report/metric_template.go index 8cd46f244..092bbba97 100644 --- a/report/metric_template.go +++ b/report/metric_template.go @@ -67,11 +67,14 @@ func (e MetricTemplates) Copy() MetricTemplates { // Merge merges two sets of MetricTemplates so far just ignores based // on duplicate id key func (e MetricTemplates) Merge(other MetricTemplates) MetricTemplates { - result := e.Copy() + if e == nil && other == nil { + return nil + } + result := make(MetricTemplates, len(e)) + for k, v := range e { + result[k] = v + } for k, v := range other { - if result == nil { - result = MetricTemplates{} - } if existing, ok := result[k]; !ok || existing.Priority < v.Priority { result[k] = v } diff --git a/report/table.go b/report/table.go index 6ab4f5a20..08d3b88f9 100644 --- a/report/table.go +++ b/report/table.go @@ -154,11 +154,14 @@ func (t TableTemplates) Copy() TableTemplates { // Merge merges two sets of TableTemplates func (t TableTemplates) Merge(other TableTemplates) TableTemplates { - result := t.Copy() + if t == nil && other == nil { + return nil + } + result := make(TableTemplates, len(t)) + for k, v := range t { + result[k] = v + } for k, v := range other { - if result == nil { - result = TableTemplates{} - } if existing, ok := result[k]; ok { v = v.Merge(existing) } diff --git a/report/topology.go b/report/topology.go index da57e994b..5fbe93a4a 100644 --- a/report/topology.go +++ b/report/topology.go @@ -175,7 +175,10 @@ func (n Nodes) Copy() Nodes { // Merge merges the other object into this one, and returns the result object. // The original is not modified. func (n Nodes) Merge(other Nodes) Nodes { - cp := n.Copy() + cp := make(Nodes, len(n)) + for k, v := range n { + cp[k] = v + } for k, v := range other { if n, ok := cp[k]; ok { // don't overwrite v = v.Merge(n)