hugo

Unnamed repository; edit this file 'description' to name the repository.

git clone git://git.shimmy1996.com/hugo.git
commit a9762b5c48054e036332eff541a8fd32e54ada13
parent 096a4b67b98259dabff5ebfbfd879a41999a1ed2
Author: Vazrupe (HyeonGyu Lee) <vazrupe@naver.com>
Date:   Wed,  9 Oct 2019 18:36:25 +0900

common: Fix elements are doubling when append a not assignable type

Fixes #6188

Diffstat:
Mcommon/collections/append.go | 1+
Mcommon/collections/append_test.go | 2++
2 files changed, 3 insertions(+), 0 deletions(-)
diff --git 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
@@ -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"}},