Skip to content

Commit febefc1

Browse files
authored
🧠 Fix error when address length less than 20 (#782)
1 parent 2199c8d commit febefc1

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

‎.changeset/red-rats-jump.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@ethereum-waffle/provider": patch
3+
---
4+
5+
🧠 Fix error when address length less than 20

‎waffle-provider/src/CallHistory.ts

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ export class CallHistory {
9696

9797
function toRecordedCall(message: any): RecordedCall {
9898
return {
99-
address: message.to ? utils.getAddress(utils.hexlify(message.to)) : undefined,
99+
address: message.to ? decodeAddress(message.to) : undefined,
100100
data: message.data ? utils.hexlify(message.data) : '0x'
101101
};
102102
}
@@ -132,3 +132,14 @@ function decodeNumber(data: Buffer): number {
132132
const newData = Buffer.concat([data, Buffer.alloc(32, 0)]);
133133
return newData.readUInt32LE();
134134
}
135+
136+
/**
137+
* Decodes a address taken from EVM execution step
138+
* into a checksumAddress.
139+
*/
140+
function decodeAddress(data: Buffer): string {
141+
if (data.length < 20) {
142+
data = Buffer.concat([Buffer.alloc(20 - data.length, 0), data]);
143+
}
144+
return utils.getAddress(utils.hexlify(data));
145+
}

0 commit comments

Comments
 (0)