From 0a04199aa03092185f6f4b2b2ff86ed5eea260d7 Mon Sep 17 00:00:00 2001 From: Richard Meissner Date: Sun, 4 Nov 2018 00:30:52 +0100 Subject: [PATCH] Handle revert in create2 with message --- lib/opFns.js | 6 +++++- lib/runCall.js | 1 - 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/opFns.js b/lib/opFns.js index 4ec98558c5a..0f5848ce082 100644 --- a/lib/opFns.js +++ b/lib/opFns.js @@ -1011,7 +1011,7 @@ function makeCall (runState, callOptions, localOpts, cb) { if (results.vm.return && (!results.vm.exceptionError || results.vm.exceptionError.error === ERROR.REVERT)) { memStore(runState, localOpts.outOffset, results.vm.return, new BN(0), localOpts.outLength, false) - if (results.vm.exceptionError && results.vm.exceptionError.error === ERROR.REVERT && runState.opName === 'CREATE') { + if (results.vm.exceptionError && results.vm.exceptionError.error === ERROR.REVERT && isCreateOpCode(runState.opName)) { runState.lastReturned = results.vm.return } @@ -1049,6 +1049,10 @@ function makeCall (runState, callOptions, localOpts, cb) { } } +function isCreateOpCode (opName) { + return opName === 'CREATE' || opName === 'CREATE2' +} + function getContractStorage (runState, address, key, cb) { if (runState._common.gteHardfork('constantinople')) { async.parallel({ diff --git a/lib/runCall.js b/lib/runCall.js index 76f26a45662..a2dd30c02cd 100644 --- a/lib/runCall.js +++ b/lib/runCall.js @@ -221,7 +221,6 @@ module.exports = function (opts, cb) { var totalGas = results.gasUsed if (!results.runState.vmError) { var returnFee = new BN(results.return.length * self._common.param('gasPrices', 'createData')) - totalGas = totalGas.add(returnFee) } // if not enough gas