| Index: src/parser.cc | 
| diff --git a/src/parser.cc b/src/parser.cc | 
| index f983437183b4acaf5c7d7ec67900ca2ed92d76f8..9e4031ad79f59d3b2e8e3d546d68aa7713e8721c 100644 | 
| --- a/src/parser.cc | 
| +++ b/src/parser.cc | 
| @@ -3543,9 +3543,9 @@ FunctionLiteral* Parser::ParseFunctionLiteral(Handle<String> var_name, | 
| //    '(' (Identifier)*[','] ')' | 
| Expect(Token::LPAREN, CHECK_OK); | 
| start_pos = scanner().location().beg_pos; | 
| -    Scanner::Location name_loc = Scanner::NoLocation(); | 
| -    Scanner::Location dupe_loc = Scanner::NoLocation(); | 
| -    Scanner::Location reserved_loc = Scanner::NoLocation(); | 
| +    Scanner::Location name_loc = Scanner::Location::invalid(); | 
| +    Scanner::Location dupe_loc = Scanner::Location::invalid(); | 
| +    Scanner::Location reserved_loc = Scanner::Location::invalid(); | 
|  | 
| bool done = (peek() == Token::RPAREN); | 
| while (!done) { | 
| @@ -3864,12 +3864,14 @@ void Parser::CheckStrictModeLValue(Expression* expression, | 
| } | 
|  | 
|  | 
| -// Checks whether octal literal last seen is between beg_pos and end_pos. | 
| -// If so, reports an error. | 
| +// Checks whether an octal literal was last seen between beg_pos and end_pos. | 
| +// If so, reports an error. Only called for strict mode. | 
| void Parser::CheckOctalLiteral(int beg_pos, int end_pos, bool* ok) { | 
| -  int octal = scanner().octal_position(); | 
| -  if (beg_pos <= octal && octal <= end_pos) { | 
| -    ReportMessageAt(Scanner::Location(octal, octal + 1), "strict_octal_literal", | 
| +  Scanner::Location octal = scanner().octal_position(); | 
| +  if (octal.IsValid() && | 
| +      beg_pos <= octal.beg_pos && | 
| +      octal.end_pos <= end_pos) { | 
| +    ReportMessageAt(octal, "strict_octal_literal", | 
| Vector<const char*>::empty()); | 
| scanner().clear_octal_position(); | 
| *ok = false; | 
|  |