| Index: src/parser.cc
|
| diff --git a/src/parser.cc b/src/parser.cc
|
| index c6c72fefbba7cdbd9614e467d2942f2ba61dc9e4..de46bb8d1db7c36d12a9e71c26f07b061642ced6 100644
|
| --- a/src/parser.cc
|
| +++ b/src/parser.cc
|
| @@ -452,6 +452,12 @@ bool ParserTraits::IsEvalOrArguments(Handle<String> identifier) const {
|
| void ParserTraits::ReportMessageAt(Scanner::Location source_location,
|
| const char* message,
|
| Vector<const char*> args) {
|
| + if (parser_->stack_overflow()) {
|
| + // Suppress the error message (syntax error or such) in the presence of a
|
| + // stack overflow. The isolate allows only one pending exception at at time
|
| + // and we want to report the stack overflow later.
|
| + return;
|
| + }
|
| MessageLocation location(parser_->script_,
|
| source_location.beg_pos,
|
| source_location.end_pos);
|
| @@ -477,6 +483,12 @@ void ParserTraits::ReportMessage(const char* message,
|
| void ParserTraits::ReportMessageAt(Scanner::Location source_location,
|
| const char* message,
|
| Vector<Handle<String> > args) {
|
| + if (parser_->stack_overflow()) {
|
| + // Suppress the error message (syntax error or such) in the presence of a
|
| + // stack overflow. The isolate allows only one pending exception at at time
|
| + // and we want to report the stack overflow later.
|
| + return;
|
| + }
|
| MessageLocation location(parser_->script_,
|
| source_location.beg_pos,
|
| source_location.end_pos);
|
|
|