Fix out-of-bound access in TransformNestedRequirement.
authorUtkarsh Saxena <usx@google.com>
Thu, 22 Dec 2022 04:18:45 +0000 (05:18 +0100)
committerUtkarsh Saxena <usx@google.com>
Thu, 22 Dec 2022 04:20:31 +0000 (05:20 +0100)
clang/lib/Sema/SemaTemplateInstantiate.cpp

index b23ae5c..c453147 100644 (file)
@@ -2335,7 +2335,8 @@ TemplateInstantiator::TransformNestedRequirement(
     llvm::SmallVector<Expr *> Result;
     if (!SemaRef.CheckConstraintSatisfaction(
             nullptr, {Req->getConstraintExpr()}, Result, TemplateArgs,
-            Req->getConstraintExpr()->getSourceRange(), Satisfaction))
+            Req->getConstraintExpr()->getSourceRange(), Satisfaction) &&
+        !Result.empty())
       TransConstraint = Result[0];
     assert(!Trap.hasErrorOccurred() && "Substitution failures must be handled "
                                        "by CheckConstraintSatisfaction.");