From a2b9f52ca4a70289ba5d9892d58c61659af07d40 Mon Sep 17 00:00:00 2001 From: Alex Beregszaszi Date: Wed, 15 Mar 2017 11:16:44 +0000 Subject: [PATCH] Disallow radix points in hex literals --- libsolidity/ast/Types.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/libsolidity/ast/Types.cpp b/libsolidity/ast/Types.cpp index 6234a04d1..52d61d138 100644 --- a/libsolidity/ast/Types.cpp +++ b/libsolidity/ast/Types.cpp @@ -582,7 +582,12 @@ tuple RationalNumberType::isValidLiteral(Literal const& _literal expPoint = find(_literal.value().begin(), _literal.value().end(), 'E'); auto radixPoint = find(_literal.value().begin(), _literal.value().end(), '.'); - if (!boost::starts_with(_literal.value(), "0x") && (expPoint != _literal.value().end())) + if (boost::starts_with(_literal.value(), "0x")) + { + // process as hex + x = bigint(_literal.value()); + } + else if (expPoint != _literal.value().end()) { if ( !all_of(_literal.value().begin(), expPoint, ::isdigit)