diff --git a/src/scanner.cc b/src/scanner.cc index bf7c9e39c4..3214c6f1c7 100644 --- a/src/scanner.cc +++ b/src/scanner.cc @@ -312,8 +312,7 @@ Token::Value Scanner::SkipSourceURLComment() { void Scanner::TryToParseSourceURLComment() { // Magic comments are of the form: //[#@]\s=\s*\s*.* and this // function will just return if it cannot parse a magic comment. - if (!unicode_cache_->IsWhiteSpace(c0_)) - return; + if (c0_ < 0 || !unicode_cache_->IsWhiteSpace(c0_)) return; Advance(); LiteralBuffer name; while (c0_ >= 0 && !unicode_cache_->IsWhiteSpaceOrLineTerminator(c0_) && diff --git a/test/mjsunit/regress/regress-crbug-433766.js b/test/mjsunit/regress/regress-crbug-433766.js new file mode 100644 index 0000000000..fae94837d4 --- /dev/null +++ b/test/mjsunit/regress/regress-crbug-433766.js @@ -0,0 +1,16 @@ +// Copyright 2014 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +var filler = "//" + new Array(('@')).join('x'); + +// Test strict eval in global context. +eval( + "'use strict';" + + "var x = 23;" + + "var f = function bozo1() {" + + " return x;" + + "};" + + "f;" + + filler +)();