svn commit: r276516 - head/contrib/llvm/tools/clang/lib/Sema
Dimitry Andric
dim at FreeBSD.org
Thu Jan 1 22:44:03 UTC 2015
Author: dim
Date: Thu Jan 1 22:44:02 2015
New Revision: 276516
URL: https://svnweb.freebsd.org/changeset/base/276516
Log:
Pull in r213790 from upstream clang trunk (by Richard Smith):
PR20228: don't retain a pointer to a vector element after the
container has been resized.
This fixes a possible crash when compiling certain parts of libc++'s
type_traits header.
Modified:
head/contrib/llvm/tools/clang/lib/Sema/SemaExprCXX.cpp
Modified: head/contrib/llvm/tools/clang/lib/Sema/SemaExprCXX.cpp
==============================================================================
--- head/contrib/llvm/tools/clang/lib/Sema/SemaExprCXX.cpp Thu Jan 1 22:26:12 2015 (r276515)
+++ head/contrib/llvm/tools/clang/lib/Sema/SemaExprCXX.cpp Thu Jan 1 22:44:02 2015 (r276516)
@@ -3642,12 +3642,13 @@ static bool evaluateTypeTrait(Sema &S, T
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);
More information about the svn-src-head
mailing list