aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libsolidity/ast/AST.cpp2
-rw-r--r--libsolidity/interface/CompilerStack.cpp12
-rw-r--r--solc/CommandLineInterface.cpp2
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;