aboutsummaryrefslogtreecommitdiffstats
path: root/packages/base-contract
diff options
context:
space:
mode:
Diffstat (limited to 'packages/base-contract')
-rw-r--r--packages/base-contract/src/index.ts8
1 files changed, 6 insertions, 2 deletions
diff --git a/packages/base-contract/src/index.ts b/packages/base-contract/src/index.ts
index 2471ded92..f14b9a96a 100644
--- a/packages/base-contract/src/index.ts
+++ b/packages/base-contract/src/index.ts
@@ -86,9 +86,13 @@ export class BaseContract {
}
protected static _throwIfRevertWithReasonCallResult(rawCallResult: string): void {
if (rawCallResult.slice(REVERT_ERROR_SELECTOR_OFFSET, REVERT_ERROR_SELECTOR_END) === REVERT_ERROR_SELECTOR) {
- const revertReason = AbiEncoder.create('(string)').decodeAsArray(
+ const revertReasonArray = AbiEncoder.create('(string)').decodeAsArray(
ethers.utils.hexDataSlice(rawCallResult, REVERT_ERROR_SELECTOR_BYTES_LENGTH),
- )[0];
+ );
+ if (revertReasonArray.length !== 1) {
+ throw new Error(`Cannot safely decode revert reason: Expected an array with one element, got ${revertReasonArray}`);
+ }
+ const revertReason = revertReasonArray[0];
throw new Error(revertReason);
}
}