From fe929114d3f34fe1999cd3cacd7f61c0ee0c0a54 Mon Sep 17 00:00:00 2001 From: Cameron Moore Date: Tue, 29 Mar 2016 18:54:46 -0500 Subject: [PATCH] tpl: Fix panic in sort of nil sequence Properly handle a nil sequence in the sortSeq function. Test included. Discovered while using `range sort .Site.Data.source.Undefined "foo"`. --- tpl/template_funcs.go | 4 ++++ tpl/template_funcs_test.go | 1 + 2 files changed, 5 insertions(+) diff --git a/tpl/template_funcs.go b/tpl/template_funcs.go index ad5b8db1e..cd7fff26c 100644 --- a/tpl/template_funcs.go +++ b/tpl/template_funcs.go @@ -957,6 +957,10 @@ func delimit(seq, delimiter interface{}, last ...interface{}) (template.HTML, er // sortSeq returns a sorted sequence. func sortSeq(seq interface{}, args ...interface{}) (interface{}, error) { + if seq == nil { + return nil, errors.New("sequence must be provided") + } + seqv := reflect.ValueOf(seq) seqv, isNil := indirect(seqv) if isNil { diff --git a/tpl/template_funcs_test.go b/tpl/template_funcs_test.go index 4b49da41b..eb5464c02 100644 --- a/tpl/template_funcs_test.go +++ b/tpl/template_funcs_test.go @@ -1565,6 +1565,7 @@ func TestSort(t *testing.T) { "asc", false, }, + {nil, nil, "asc", false}, } { var result interface{} var err error