Title: [196258] trunk/Source/_javascript_Core
Revision
196258
Author
fpi...@apple.com
Date
2016-02-08 10:52:57 -0800 (Mon, 08 Feb 2016)

Log Message

Parser should detect error before calls to parseAssignmentExpression()
https://bugs.webkit.org/show_bug.cgi?id=153975
rdar://problem/24291231

Reviewed by Saam Barati.

Fixes a very hard-to-create situation that an internal test picked up.

* parser/Parser.cpp:
(JSC::Parser<LexerType>::parseVariableDeclarationList):
(JSC::Parser<LexerType>::parseAssignmentExpression):

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (196257 => 196258)


--- trunk/Source/_javascript_Core/ChangeLog	2016-02-08 18:43:18 UTC (rev 196257)
+++ trunk/Source/_javascript_Core/ChangeLog	2016-02-08 18:52:57 UTC (rev 196258)
@@ -1,3 +1,17 @@
+2016-02-08  Filip Pizlo  <fpi...@apple.com>
+
+        Parser should detect error before calls to parseAssignmentExpression()
+        https://bugs.webkit.org/show_bug.cgi?id=153975
+        rdar://problem/24291231
+
+        Reviewed by Saam Barati.
+
+        Fixes a very hard-to-create situation that an internal test picked up.
+
+        * parser/Parser.cpp:
+        (JSC::Parser<LexerType>::parseVariableDeclarationList):
+        (JSC::Parser<LexerType>::parseAssignmentExpression):
+
 2016-02-08  Andreas Kling  <akl...@apple.com>
 
         Visiting a WeakBlock should report bytes visited, since we reported them allocated.

Modified: trunk/Source/_javascript_Core/parser/Parser.cpp (196257 => 196258)


--- trunk/Source/_javascript_Core/parser/Parser.cpp	2016-02-08 18:43:18 UTC (rev 196257)
+++ trunk/Source/_javascript_Core/parser/Parser.cpp	2016-02-08 18:52:57 UTC (rev 196258)
@@ -714,6 +714,7 @@
                 JSTextPosition varDivot = tokenStartPosition() + 1;
                 initStart = tokenStartPosition();
                 next(TreeBuilder::DontBuildStrings); // consume '='
+                propagateError();
                 TreeExpression initializer = parseAssignmentExpression(context);
                 initEnd = lastTokenEndPosition();
                 lastInitializer = initializer;
@@ -2947,6 +2948,8 @@
 template <typename LexerType>
 template <typename TreeBuilder> TreeExpression Parser<LexerType>::parseAssignmentExpression(TreeBuilder& context, ExpressionErrorClassifier& classifier)
 {
+    ASSERT(!hasError());
+    
     failIfStackOverflow();
     JSTextPosition start = tokenStartPosition();
     JSTokenLocation location(tokenLocation());
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to