]> Cypherpunks.ru repositories - gostls13.git/commitdiff
reflect: FuncOf support more than 50 arguments
authorcuiweixie <cuiweixie@gmail.com>
Thu, 25 Aug 2022 06:41:23 +0000 (14:41 +0800)
committerGopher Robot <gobot@golang.org>
Fri, 26 Aug 2022 14:32:13 +0000 (14:32 +0000)
Fixes #54669

Change-Id: I34cbe729d187437ddeafbaa910af6ed001b2603f
Reviewed-on: https://go-review.googlesource.com/c/go/+/425461
Reviewed-by: Ian Lance Taylor <iant@google.com>
Reviewed-by: Cherry Mui <cherryyz@google.com>
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Ian Lance Taylor <iant@google.com>
Auto-Submit: Ian Lance Taylor <iant@google.com>

src/reflect/all_test.go
src/reflect/type.go

index 3ba6cc2d51cde901a27f5c1b5e387a03a5d388cc..37e01e0be4db9b4dd64956b34c578a882e1d5794 100644 (file)
@@ -6258,6 +6258,13 @@ func TestFuncOf(t *testing.T) {
        FuncOf([]Type{TypeOf(1), TypeOf(""), SliceOf(TypeOf(false))}, nil, true)
        shouldPanic("must be slice", func() { FuncOf([]Type{TypeOf(0), TypeOf(""), TypeOf(false)}, nil, true) })
        shouldPanic("must be slice", func() { FuncOf(nil, nil, true) })
+
+       //testcase for  #54669
+       var in []Type
+       for i := 0; i < 51; i++ {
+               in = append(in, TypeOf(1))
+       }
+       FuncOf(in, nil, false)
 }
 
 type B1 struct {
index cb657905d0b9fce44dd7c6dd5d35350281edab64..443a4b258d662f238e2c40230e66fd308ca88411 100644 (file)
@@ -2077,9 +2077,7 @@ func FuncOf(in, out []Type, variadic bool) Type {
                args = append(args, t)
                hash = fnv1(hash, byte(t.hash>>24), byte(t.hash>>16), byte(t.hash>>8), byte(t.hash))
        }
-       if len(args) > 50 {
-               panic("reflect.FuncOf does not support more than 50 arguments")
-       }
+
        ft.tflag = 0
        ft.hash = hash
        ft.inCount = uint16(len(in))