summaryrefslogtreecommitdiffstats
path: root/clang/lib
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2014-07-23 20:07:08 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2014-07-23 20:07:08 +0000
commita507bfc6b99ae8e187c1b5b952ac48c0fa7f00ef (patch)
tree7a7764bdf6d8aad2dd9a4ab9e16acd6f3bd3926b /clang/lib
parent9e112443b619b8da6050a70b1625a3e890bc15c3 (diff)
downloadbcm5719-llvm-a507bfc6b99ae8e187c1b5b952ac48c0fa7f00ef.tar.gz
bcm5719-llvm-a507bfc6b99ae8e187c1b5b952ac48c0fa7f00ef.zip
PR20228: don't retain a pointer to a vector element after the container has been resized.
llvm-svn: 213790
Diffstat (limited to 'clang/lib')
-rw-r--r--clang/lib/Sema/SemaExprCXX.cpp7
1 files changed, 4 insertions, 3 deletions
diff --git a/clang/lib/Sema/SemaExprCXX.cpp b/clang/lib/Sema/SemaExprCXX.cpp
index 7fe5e7a4bfa..2745a8cbe3a 100644
--- a/clang/lib/Sema/SemaExprCXX.cpp
+++ b/clang/lib/Sema/SemaExprCXX.cpp
@@ -3651,12 +3651,13 @@ static bool evaluateTypeTrait(Sema &S, TypeTrait Kind, SourceLocation KWLoc,
if (T->isObjectType() || T->isFunctionType())
T = S.Context.getRValueReferenceType(T);
OpaqueArgExprs.push_back(
- OpaqueValueExpr(Args[I]->getTypeLoc().getLocStart(),
+ OpaqueValueExpr(Args[I]->getTypeLoc().getLocStart(),
T.getNonLValueExprType(S.Context),
Expr::getValueKindForType(T)));
- ArgExprs.push_back(&OpaqueArgExprs.back());
}
-
+ for (Expr &E : OpaqueArgExprs)
+ ArgExprs.push_back(&E);
+
// Perform the initialization in an unevaluated context within a SFINAE
// trap at translation unit scope.
EnterExpressionEvaluationContext Unevaluated(S, Sema::Unevaluated);
OpenPOWER on IntegriCloud