Do not panic on index out of range in shortcode.Get

Fixes #1335
This commit is contained in:
Bjørn Erik Pedersen 2015-08-07 19:21:26 +02:00
parent 2805a6f80e
commit 35bb72c83e
2 changed files with 13 additions and 1 deletions

View file

@ -60,7 +60,13 @@ func (scp *ShortcodeWithPage) Get(key interface{}) interface{} {
if reflect.TypeOf(scp.Params).Kind() == reflect.Map {
return "error: cannot access named params by position"
} else if reflect.TypeOf(scp.Params).Kind() == reflect.Slice {
x = reflect.ValueOf(scp.Params).Index(int(reflect.ValueOf(key).Int()))
idx := int(reflect.ValueOf(key).Int())
ln := reflect.ValueOf(scp.Params).Len()
if idx > ln-1 {
helpers.DistinctErrorLog.Printf("No shortcode param at .Get %d in page %s, have params: %v", idx, scp.Page.FullFilePath(), scp.Params)
return fmt.Sprintf("error: index out of range for positional param at position %d", idx)
}
x = reflect.ValueOf(scp.Params).Index(idx)
}
case string:
if reflect.TypeOf(scp.Params).Kind() == reflect.Map {