teemperor created this revision.
teemperor added a reviewer: ribrdb.
teemperor edited the summary of this revision.

`m_last_tok` isn't initialized anywhere before it's used the first time (most 
likely in the `GoParser::Rule::error` method), which causes most of the 
GoParser tests to fail with sanitizers enabled with errors like this:

  GoParser.cpp:52:21: runtime error: load of value <random value>, which is not 
a valid value for type 'GoLexer::TokenType'
  UndefinedBehaviorSanitizer: undefined-behavior GoParser.cpp:52:21


https://reviews.llvm.org/D42339

Files:
  source/Plugins/ExpressionParser/Go/GoParser.cpp


Index: source/Plugins/ExpressionParser/Go/GoParser.cpp
===================================================================
--- source/Plugins/ExpressionParser/Go/GoParser.cpp
+++ source/Plugins/ExpressionParser/Go/GoParser.cpp
@@ -67,7 +67,9 @@
   size_t m_pos;
 };
 
-GoParser::GoParser(const char *src) : m_lexer(src), m_pos(0), m_failed(false) 
{}
+GoParser::GoParser(const char *src)
+    : m_lexer(src), m_pos(0), m_last_tok(GoLexer::TOK_INVALID),
+      m_failed(false) {}
 
 GoASTStmt *GoParser::Statement() {
   Rule r("Statement", this);


Index: source/Plugins/ExpressionParser/Go/GoParser.cpp
===================================================================
--- source/Plugins/ExpressionParser/Go/GoParser.cpp
+++ source/Plugins/ExpressionParser/Go/GoParser.cpp
@@ -67,7 +67,9 @@
   size_t m_pos;
 };
 
-GoParser::GoParser(const char *src) : m_lexer(src), m_pos(0), m_failed(false) {}
+GoParser::GoParser(const char *src)
+    : m_lexer(src), m_pos(0), m_last_tok(GoLexer::TOK_INVALID),
+      m_failed(false) {}
 
 GoASTStmt *GoParser::Statement() {
   Rule r("Statement", this);
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to