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")) { |
+ 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(); |
} |