aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian <c@ethdev.com>2014-12-15 08:02:33 +0800
committerChristian <c@ethdev.com>2014-12-15 08:02:33 +0800
commit739192ae6591c18fdb22d6ef38485378134d247d (patch)
treec3ea122e0db53b1eda88f7e3a1972a815157a7e7
parentc0bba438b1d93b3ebba46e03935dbdf8b1ba6bd5 (diff)
downloaddexon-solidity-739192ae6591c18fdb22d6ef38485378134d247d.tar
dexon-solidity-739192ae6591c18fdb22d6ef38485378134d247d.tar.gz
dexon-solidity-739192ae6591c18fdb22d6ef38485378134d247d.tar.bz2
dexon-solidity-739192ae6591c18fdb22d6ef38485378134d247d.tar.lz
dexon-solidity-739192ae6591c18fdb22d6ef38485378134d247d.tar.xz
dexon-solidity-739192ae6591c18fdb22d6ef38485378134d247d.tar.zst
dexon-solidity-739192ae6591c18fdb22d6ef38485378134d247d.zip
Correctly check for string prefix plus indentation change.
-rw-r--r--ExpressionCompiler.cpp2
-rw-r--r--Types.cpp20
2 files changed, 13 insertions, 9 deletions
diff --git a/ExpressionCompiler.cpp b/ExpressionCompiler.cpp
index add5f73b..f872e058 100644
--- a/ExpressionCompiler.cpp
+++ b/ExpressionCompiler.cpp
@@ -291,7 +291,7 @@ void ExpressionCompiler::endVisit(MemberAccess const& _memberAccess)
IntegerType(0, IntegerType::Modifier::ADDRESS), true);
m_context << eth::Instruction::BALANCE;
}
- else if (member == "send" || member.substr(0, 4) == "call")
+ else if (member == "send" || member.substr(0, min<size_t>(member.size(), 4)) == "call")
appendTypeConversion(*_memberAccess.getExpression().getType(),
IntegerType(0, IntegerType::Modifier::ADDRESS), true);
else
diff --git a/Types.cpp b/Types.cpp
index a0a809b9..c2d48841 100644
--- a/Types.cpp
+++ b/Types.cpp
@@ -193,14 +193,18 @@ u256 IntegerType::literalValue(Literal const& _literal) const
}
const MemberList IntegerType::AddressMemberList =
- MemberList({{"balance", make_shared<IntegerType const>(256)},
- {"callstring32", make_shared<FunctionType const>(TypePointers({make_shared<StaticStringType const>(32)}),
- TypePointers(), FunctionType::Location::BARE)},
- {"callstring32string32", make_shared<FunctionType const>(TypePointers({make_shared<StaticStringType const>(32),
- make_shared<StaticStringType const>(32)}),
- TypePointers(), FunctionType::Location::BARE)},
- {"send", make_shared<FunctionType const>(TypePointers({make_shared<IntegerType const>(256)}),
- TypePointers(), FunctionType::Location::SEND)}});
+ MemberList({{"balance",
+ make_shared<IntegerType const>(256)},
+ {"callstring32",
+ make_shared<FunctionType const>(TypePointers({make_shared<StaticStringType const>(32)}),
+ TypePointers(), FunctionType::Location::BARE)},
+ {"callstring32string32",
+ make_shared<FunctionType const>(TypePointers({make_shared<StaticStringType const>(32),
+ make_shared<StaticStringType const>(32)}),
+ TypePointers(), FunctionType::Location::BARE)},
+ {"send",
+ make_shared<FunctionType const>(TypePointers({make_shared<IntegerType const>(256)}),
+ TypePointers(), FunctionType::Location::SEND)}});
shared_ptr<StaticStringType> StaticStringType::smallestTypeForLiteral(string const& _literal)
{