From 20086b496f58413bc9ca09a327f037c34d849867 Mon Sep 17 00:00:00 2001 From: Ben Hauser Date: Wed, 11 Nov 2020 18:28:33 +0400 Subject: [PATCH] fix: handle undecodable revert message in subcalls --- brownie/network/transaction.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/brownie/network/transaction.py b/brownie/network/transaction.py index 7fe462752..58955b273 100644 --- a/brownie/network/transaction.py +++ b/brownie/network/transaction.py @@ -645,9 +645,12 @@ def _expand_trace(self) -> None: subcall["selfdestruct"] = True else: if opcode == "REVERT": - data = _get_memory(trace[i], -1)[4:] - if data: - subcall["revert_msg"] = decode_abi(["string"], data)[0] + data = _get_memory(trace[i], -1) + if len(data) > 4: + try: + subcall["revert_msg"] = decode_abi(["string"], data[4:])[0] + except Exception: + subcall["revert_msg"] = data.hex() if "revert_msg" not in subcall and "dev" in pc: subcall["revert_msg"] = pc["dev"]