diff options
author | chriseth <chris@ethereum.org> | 2018-10-16 20:25:58 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-10-16 20:25:58 +0800 |
commit | b723893ac76aefb07f7792fb9f16cff72f3e84b0 (patch) | |
tree | f4f1ae9003c103ec28b01784f514c0b9ba9297c8 /solc/CommandLineInterface.cpp | |
parent | 036929aba11268eafb602394af8b212fbe56ae6c (diff) | |
parent | 9f9d6fdcc48bfbc1c039c903d60aa38a166c1850 (diff) | |
download | dexon-solidity-b723893ac76aefb07f7792fb9f16cff72f3e84b0.tar dexon-solidity-b723893ac76aefb07f7792fb9f16cff72f3e84b0.tar.gz dexon-solidity-b723893ac76aefb07f7792fb9f16cff72f3e84b0.tar.bz2 dexon-solidity-b723893ac76aefb07f7792fb9f16cff72f3e84b0.tar.lz dexon-solidity-b723893ac76aefb07f7792fb9f16cff72f3e84b0.tar.xz dexon-solidity-b723893ac76aefb07f7792fb9f16cff72f3e84b0.tar.zst dexon-solidity-b723893ac76aefb07f7792fb9f16cff72f3e84b0.zip |
Merge pull request #5225 from mestorlx/issue5007
Prevent crash in case there are no contracts
Diffstat (limited to 'solc/CommandLineInterface.cpp')
-rw-r--r-- | solc/CommandLineInterface.cpp | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/solc/CommandLineInterface.cpp b/solc/CommandLineInterface.cpp index 4052ed13..e0c6a2b6 100644 --- a/solc/CommandLineInterface.cpp +++ b/solc/CommandLineInterface.cpp @@ -994,16 +994,14 @@ void CommandLineInterface::handleAst(string const& _argStr) for (auto const& sourceCode: m_sourceCodes) asts.push_back(&m_compiler->ast(sourceCode.first)); map<ASTNode const*, eth::GasMeter::GasConsumption> gasCosts; - // FIXME: shouldn't this be done for every contract? - if (m_compiler->runtimeAssemblyItems(m_compiler->lastContractName())) + for (auto const& contract : m_compiler->contractNames()) { - //NOTE: keep the local variable `ret` to prevent a Heisenbug that could happen on certain mac os platform. - //See: https://github.com/ethereum/solidity/issues/3718 for details. auto ret = GasEstimator::breakToStatementLevel( - GasEstimator(m_evmVersion).structuralEstimation(*m_compiler->runtimeAssemblyItems(m_compiler->lastContractName()), asts), + GasEstimator(m_evmVersion).structuralEstimation(*m_compiler->runtimeAssemblyItems(contract), asts), asts ); - gasCosts = ret; + for (auto const& it: ret) + gasCosts[it.first] += it.second; } bool legacyFormat = !m_args.count(g_argAstCompactJson); |