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); |