diff options
-rw-r--r-- | libsolidity/ast/AST.cpp | 2 | ||||
-rw-r--r-- | libsolidity/interface/CompilerStack.cpp | 12 | ||||
-rw-r--r-- | solc/CommandLineInterface.cpp | 2 |
3 files changed, 5 insertions, 11 deletions
diff --git a/libsolidity/ast/AST.cpp b/libsolidity/ast/AST.cpp index 562ac828..45ff69c5 100644 --- a/libsolidity/ast/AST.cpp +++ b/libsolidity/ast/AST.cpp @@ -190,7 +190,7 @@ void ContractDefinition::setUserDocumentation(Json::Value const& _userDocumentat } -std::string ContractDefinition::fullyQualifiedName() const +string ContractDefinition::fullyQualifiedName() const { std::string sourceString = *(location().sourceName); std::string qualifiedName = (sourceString.empty() ? ("") : (sourceString + ":")) + name(); diff --git a/libsolidity/interface/CompilerStack.cpp b/libsolidity/interface/CompilerStack.cpp index 7626406c..fbaf1bcc 100644 --- a/libsolidity/interface/CompilerStack.cpp +++ b/libsolidity/interface/CompilerStack.cpp @@ -184,7 +184,7 @@ bool CompilerStack::parse() if (m_contracts.find(contract->fullyQualifiedName()) != m_contracts.end()) { - const ContractDefinition* existingContract = m_contracts.find(contract->fullyQualifiedName())->second.contract; + ContractDefinition const* existingContract = m_contracts[contract->fullyQualifiedName()].contract; if (contract != existingContract) { auto err = make_shared<Error>(Error::Type::DeclarationError); @@ -201,9 +201,7 @@ bool CompilerStack::parse() } } else - { m_contracts[contract->fullyQualifiedName()].contract = contract; - } } if (!checkLibraryNameClashes()) @@ -224,9 +222,10 @@ bool CompilerStack::parse() else noErrors = false; + // Note that find() must be used here to prevent an automatic insert into the map if (m_contracts.find(contract->fullyQualifiedName()) != m_contracts.end()) { - const ContractDefinition* existingContract = m_contracts.find(contract->fullyQualifiedName())->second.contract; + ContractDefinition const* existingContract = m_contracts[contract->fullyQualifiedName()].contract; if (contract != existingContract) { @@ -245,9 +244,7 @@ bool CompilerStack::parse() } else - { m_contracts[contract->fullyQualifiedName()].contract = contract; - } } if (noErrors) @@ -379,8 +376,7 @@ std::string const CompilerStack::filesystemFriendlyName(string const& _contractN } } // If no collision, return the contract's name - // String is copied to ensure that the contract's name can't be messed with - return std::string(matchContract.contract->name()); + return matchContract.contract->name(); } eth::LinkerObject const& CompilerStack::object(string const& _contractName) const diff --git a/solc/CommandLineInterface.cpp b/solc/CommandLineInterface.cpp index cebc9a07..4a4d3571 100644 --- a/solc/CommandLineInterface.cpp +++ b/solc/CommandLineInterface.cpp @@ -186,9 +186,7 @@ void CommandLineInterface::handleBinary(string const& _contract) if (m_args.count(g_argBinary)) { if (m_args.count("output-dir")) - { createFile(m_compiler->filesystemFriendlyName(_contract) + ".bin", m_compiler->object(_contract).toHex()); - } else { cout << "Binary: " << endl; |