From a9762b5c48054e036332eff541a8fd32e54ada13 Mon Sep 17 00:00:00 2001 From: "Vazrupe (HyeonGyu Lee)" Date: Wed, 9 Oct 2019 18:36:25 +0900 Subject: common: Fix elements are doubling when append a not assignable type Fixes #6188 --- common/collections/append.go | 1 + common/collections/append_test.go | 2 ++ 2 files changed, 3 insertions(+) (limited to 'common') diff --git a/common/collections/append.go b/common/collections/append.go index ee15fef7d..b56455bc9 100644 --- a/common/collections/append.go +++ b/common/collections/append.go @@ -65,6 +65,7 @@ func Append(to interface{}, from ...interface{}) (interface{}, error) { fv := reflect.ValueOf(f) if !fv.Type().AssignableTo(tot) { // Fall back to a []interface{} slice. + tov, _ := indirect(reflect.ValueOf(to)) return appendToInterfaceSlice(tov, from...) } tov = reflect.Append(tov, fv) diff --git a/common/collections/append_test.go b/common/collections/append_test.go index 8c9a6e73f..4086570b8 100644 --- a/common/collections/append_test.go +++ b/common/collections/append_test.go @@ -14,6 +14,7 @@ package collections import ( + "html/template" "testing" qt "github.com/frankban/quicktest" @@ -31,6 +32,7 @@ func TestAppend(t *testing.T) { {[]string{"a", "b"}, []interface{}{"c"}, []string{"a", "b", "c"}}, {[]string{"a", "b"}, []interface{}{"c", "d", "e"}, []string{"a", "b", "c", "d", "e"}}, {[]string{"a", "b"}, []interface{}{[]string{"c", "d", "e"}}, []string{"a", "b", "c", "d", "e"}}, + {[]string{"a"}, []interface{}{"b", template.HTML("c")}, []interface{}{"a", "b", template.HTML("c")}}, {nil, []interface{}{"a", "b"}, []string{"a", "b"}}, {nil, []interface{}{nil}, []interface{}{nil}}, {[]interface{}{}, []interface{}{[]string{"c", "d", "e"}}, []string{"c", "d", "e"}}, -- cgit v1.2.3