fix skslc crashes uncovered by fuzz testing
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2413423003
Review-Url: https://codereview.chromium.org/2413423003
diff --git a/src/sksl/SkSLParser.cpp b/src/sksl/SkSLParser.cpp
index 9e3e847..d011d46 100644
--- a/src/sksl/SkSLParser.cpp
+++ b/src/sksl/SkSLParser.cpp
@@ -808,17 +808,26 @@
case Token::SEMICOLON:
this->nextToken();
break;
- case Token::CONST:
+ case Token::CONST: {
+ std::unique_ptr<ASTVarDeclarations> vd = this->varDeclarations();
+ if (!vd) {
+ return nullptr;
+ }
initializer = std::unique_ptr<ASTStatement>(new ASTVarDeclarationStatement(
- this->varDeclarations()));
+ std::move(vd)));
break;
- case Token::IDENTIFIER:
+ }
+ case Token::IDENTIFIER: {
if (this->isType(nextToken.fText)) {
+ std::unique_ptr<ASTVarDeclarations> vd = this->varDeclarations();
+ if (!vd) {
+ return nullptr;
+ }
initializer = std::unique_ptr<ASTStatement>(new ASTVarDeclarationStatement(
- this->varDeclarations()));
+ std::move(vd)));
break;
}
- // fall through
+ } // fall through
default:
initializer = this->expressionStatement();
}