URI: 
       tpl/strings: Adjust the overflow validation in strings.Repeat - hugo - [fork] hugo port for 9front
  HTML git clone git@git.drkhsh.at/hugo.git
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
   DIR README
   DIR LICENSE
       ---
   DIR commit 90c774908530390daa5813fcdd31435999971359
   DIR parent 13435a6f608306c5094fdcd72a1d9538727f91b2
  HTML Author: Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
       Date:   Sun,  3 Jun 2018 10:35:45 +0300
       
       tpl/strings: Adjust the overflow validation in strings.Repeat
       
       This now matches the validation in the stdlib, but we return an error instead.
       
       Diffstat:
         M tpl/strings/strings.go              |       8 ++++----
         M tpl/strings/strings_test.go         |       2 +-
       
       2 files changed, 5 insertions(+), 5 deletions(-)
       ---
   DIR diff --git a/tpl/strings/strings.go b/tpl/strings/strings.go
       @@ -17,7 +17,6 @@ import (
                "errors"
                "fmt"
                "html/template"
       -        "math"
                _strings "strings"
                "unicode/utf8"
        
       @@ -420,7 +419,6 @@ func (ns *Namespace) TrimSuffix(suffix, s interface{}) (string, error) {
        }
        
        // Repeat returns a new string consisting of count copies of the string s.
       -// The count is limited to an in16 value (up to 32767).
        func (ns *Namespace) Repeat(n, s interface{}) (string, error) {
                ss, err := cast.ToStringE(s)
                if err != nil {
       @@ -432,8 +430,10 @@ func (ns *Namespace) Repeat(n, s interface{}) (string, error) {
                        return "", err
                }
        
       -        if sn > math.MaxInt16 {
       -                return "", fmt.Errorf("Cannot repeat string more than %d times", math.MaxInt16)
       +        if sn < 0 {
       +                return "", errors.New("strings: negative Repeat count")
       +        } else if sn > 0 && len(ss)*sn/sn != len(ss) {
       +                return "", errors.New("strings: Repeat count causes overflow")
                }
        
                return _strings.Repeat(ss, sn), nil
   DIR diff --git a/tpl/strings/strings_test.go b/tpl/strings/strings_test.go
       @@ -730,7 +730,7 @@ func TestRepeat(t *testing.T) {
                        // errors
                        {"", tstNoStringer{}, false},
                        {tstNoStringer{}, "", false},
       -                {"hi", math.MaxInt16 + 1, false},
       +                {"ab", math.MaxInt64, false},
                } {
                        errMsg := fmt.Sprintf("[%d] %v", i, test)