|
|
|
@ -154,12 +154,20 @@ func (c *BoundContract) GetDeployer() *Transaction { |
|
|
|
|
// Call invokes the (constant) contract method with params as input values and
|
|
|
|
|
// sets the output to result.
|
|
|
|
|
func (c *BoundContract) Call(opts *CallOpts, out *Interfaces, method string, args *Interfaces) error { |
|
|
|
|
results := make([]interface{}, len(out.objects)) |
|
|
|
|
copy(results, out.objects) |
|
|
|
|
if err := c.contract.Call(&opts.opts, &results, method, args.objects...); err != nil { |
|
|
|
|
return err |
|
|
|
|
if len(out.objects) == 1 { |
|
|
|
|
result := out.objects[0] |
|
|
|
|
if err := c.contract.Call(&opts.opts, result, method, args.objects...); err != nil { |
|
|
|
|
return err |
|
|
|
|
} |
|
|
|
|
out.objects[0] = result |
|
|
|
|
} else { |
|
|
|
|
results := make([]interface{}, len(out.objects)) |
|
|
|
|
copy(results, out.objects) |
|
|
|
|
if err := c.contract.Call(&opts.opts, &results, method, args.objects...); err != nil { |
|
|
|
|
return err |
|
|
|
|
} |
|
|
|
|
copy(out.objects, results) |
|
|
|
|
} |
|
|
|
|
copy(out.objects, results) |
|
|
|
|
return nil |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|