Chromium Code Reviews| Index: tools/gn/parse_tree.cc |
| diff --git a/tools/gn/parse_tree.cc b/tools/gn/parse_tree.cc |
| index f5897065548f01b102328c3edaa41a7f31a27af6..5e5b9ea01b719b1e5f1ca69fe06868dd570c74a3 100644 |
| --- a/tools/gn/parse_tree.cc |
| +++ b/tools/gn/parse_tree.cc |
| @@ -634,8 +634,16 @@ Value LiteralNode::Execute(Scope* scope, Err* err) const { |
| case Token::FALSE_TOKEN: |
| return Value(this, false); |
| case Token::INTEGER: { |
| + base::StringPiece s = value_.value(); |
| + if ((s.starts_with("0") && s.size() > 1) || s.starts_with("-0")) { |
|
tfarina
2015/03/27 00:25:26
The logic seems correct. I don't see problems with
|
| + if (s == "-0") |
| + *err = MakeErrorDescribing("Negative zero doesn't make sense"); |
| + else |
| + *err = MakeErrorDescribing("Leading zeros not allowed"); |
| + return Value(); |
| + } |
| int64 result_int; |
| - if (!base::StringToInt64(value_.value(), &result_int)) { |
| + if (!base::StringToInt64(s, &result_int)) { |
| *err = MakeErrorDescribing("This does not look like an integer"); |
| return Value(); |
| } |