ethereumjs-abi
ethereumjs-abi copied to clipboard
parseSignature breaks on zero input params
src: https://github.com/ethereumjs/ethereumjs-abi/blob/master/lib/index.js#L81-L83
works
/^(\w+)\((.+)\)$/.exec('hi(bytes)')
["hi(bytes)", "hi", "bytes"]
breaks
/^(\w+)\((.+)\)$/.exec('hi()')
null
this seems to work, will PR
// someMethod()
// someMethod(bytes,uint)
// someMethod(bytes,uint):(boolean)
function parseSignature (sigString) {
var methodEndIndex = sigString.indexOf('(')
if (methodEndIndex === -1) {
throw new Error('Invalid method signature')
}
var methodName = sigString.slice(0,methodEndIndex)
var allArgs = sigString.slice(methodEndIndex+1,-1)
var [ inputArgs, outputArgs ] = allArgs.split(':')
return {
method: methodName,
args: (inputArgs ? inputArgs.split(',') : []),
retargs: (outputArgs ? outputArgs.split(',') : null),
}
}
In order to handle "someMethod():(boolean)" you might consider changing
var [ inputArgs, outputArgs ] = allArgs.split(':')
to
var [ inputArgs, outputArgs ] = allArgs.split('):(')