diff options
-rw-r--r-- | packages/sol-cov/src/trace.ts | 4 | ||||
-rw-r--r-- | packages/sol-cov/test/trace_test.ts | 2 |
2 files changed, 4 insertions, 2 deletions
diff --git a/packages/sol-cov/src/trace.ts b/packages/sol-cov/src/trace.ts index feebaaab5..389bd8309 100644 --- a/packages/sol-cov/src/trace.ts +++ b/packages/sol-cov/src/trace.ts @@ -27,7 +27,9 @@ export function getTracesByContractAddress(structLogs: StructLog[], startAddress const currentAddress = _.last(callStack) as string; const jumpAddressOffset = structLog.op === OpCode.DelegateCall ? 4 : 2; const newAddress = addressUtils.padZeros( - new BigNumber(addHexPrefix(structLog.stack[structLog.stack.length - jumpAddressOffset])).toString(16), + new BigNumber(addHexPrefix(structLog.stack[structLog.stack.length - jumpAddressOffset - 1])).toString( + 16, + ), ); if (structLog === _.last(structLogs)) { throw new Error('CALL-like opcode can not be the last one'); diff --git a/packages/sol-cov/test/trace_test.ts b/packages/sol-cov/test/trace_test.ts index 2d6697ce5..93696b04a 100644 --- a/packages/sol-cov/test/trace_test.ts +++ b/packages/sol-cov/test/trace_test.ts @@ -32,7 +32,7 @@ describe('Trace', () => { const trace = [ { op: OpCode.DelegateCall, - stack: ['0x', '0x', '0x', '0x', delegateCallAddress], + stack: [delegateCallAddress, '0x', '0x', '0x', '0x'], depth: 0, }, { |