@@ -81,7 +81,7 @@ func unpackPack(abi ABI, method string, input []byte) ([]any, bool) {
8181
8282func packUnpack (abi ABI , method string , input * []any ) bool {
8383 if packed , err := abi .Pack (method , input ); err == nil {
84- outptr := reflect .New (reflect .TypeOf ( input ))
84+ outptr := reflect .New (reflect .TypeFor [ * [] any ]( ))
8585 err := abi .UnpackIntoInterface (outptr .Interface (), method , packed )
8686 if err != nil {
8787 panic (err )
@@ -101,34 +101,35 @@ type arg struct {
101101}
102102
103103func createABI (name string , stateMutability , payable * string , inputs []arg ) (ABI , error ) {
104- sig := fmt .Sprintf (`[{ "type" : "function", "name" : "%v" ` , name )
104+ var sig strings.Builder
105+ fmt .Fprintf (& sig , `[{ "type" : "function", "name" : "%v" ` , name )
105106 if stateMutability != nil {
106- sig += fmt .Sprintf ( `, "stateMutability": "%v" ` , * stateMutability )
107+ fmt .Fprintf ( & sig , `, "stateMutability": "%v" ` , * stateMutability )
107108 }
108109 if payable != nil {
109- sig += fmt .Sprintf ( `, "payable": %v ` , * payable )
110+ fmt .Fprintf ( & sig , `, "payable": %v ` , * payable )
110111 }
111112 if len (inputs ) > 0 {
112- sig += `, "inputs" : [ {`
113+ sig . WriteString ( `, "inputs" : [ {` )
113114 for i , inp := range inputs {
114- sig += fmt .Sprintf ( `"name" : "%v", "type" : "%v" ` , inp .name , inp .typ )
115+ fmt .Fprintf ( & sig , `"name" : "%v", "type" : "%v" ` , inp .name , inp .typ )
115116 if i + 1 < len (inputs ) {
116- sig += ","
117+ sig . WriteString ( "," )
117118 }
118119 }
119- sig += "} ]"
120- sig += `, "outputs" : [ {`
120+ sig . WriteString ( "} ]" )
121+ sig . WriteString ( `, "outputs" : [ {` )
121122 for i , inp := range inputs {
122- sig += fmt .Sprintf ( `"name" : "%v", "type" : "%v" ` , inp .name , inp .typ )
123+ fmt .Fprintf ( & sig , `"name" : "%v", "type" : "%v" ` , inp .name , inp .typ )
123124 if i + 1 < len (inputs ) {
124- sig += ","
125+ sig . WriteString ( "," )
125126 }
126127 }
127- sig += "} ]"
128+ sig . WriteString ( "} ]" )
128129 }
129- sig += `}]`
130+ sig . WriteString ( `}]` )
130131 // fmt.Printf("sig: %s\n", sig)
131- return JSON (strings .NewReader (sig ))
132+ return JSON (strings .NewReader (sig . String () ))
132133}
133134
134135func fuzzAbi (input []byte ) {
0 commit comments