summaryrefslogtreecommitdiffstats
path: root/clang
diff options
context:
space:
mode:
authorEli Friedman <eli.friedman@gmail.com>2009-11-08 22:15:39 +0000
committerEli Friedman <eli.friedman@gmail.com>2009-11-08 22:15:39 +0000
commitfd8d4e1383a829dc3cc2b271aab5abe14eca6813 (patch)
tree8be0a8140c4bfd7239482d0bb8d066c6da2ee0ae /clang
parent2edf3a489684fa055f4b9fe1ed4253280c9052b5 (diff)
downloadbcm5719-llvm-fd8d4e1383a829dc3cc2b271aab5abe14eca6813.tar.gz
bcm5719-llvm-fd8d4e1383a829dc3cc2b271aab5abe14eca6813.zip
Fix use-after-free bug.
llvm-svn: 86485
Diffstat (limited to 'clang')
-rw-r--r--clang/lib/Sema/SemaExprCXX.cpp5
1 files changed, 2 insertions, 3 deletions
diff --git a/clang/lib/Sema/SemaExprCXX.cpp b/clang/lib/Sema/SemaExprCXX.cpp
index 4188905fdde..94550e6f192 100644
--- a/clang/lib/Sema/SemaExprCXX.cpp
+++ b/clang/lib/Sema/SemaExprCXX.cpp
@@ -424,14 +424,13 @@ Sema::BuildCXXNew(SourceLocation StartLoc, bool UseGlobal,
Expr **ConsArgs = (Expr**)ConstructorArgs.get();
const RecordType *RT;
unsigned NumConsArgs = ConstructorArgs.size();
-
+ ASTOwningVector<&ActionBase::DeleteExpr> ConvertedConstructorArgs(*this);
+
if (AllocType->isDependentType() ||
Expr::hasAnyTypeDependentArguments(ConsArgs, NumConsArgs)) {
// Skip all the checks.
} else if ((RT = AllocType->getAs<RecordType>()) &&
!AllocType->isAggregateType()) {
- ASTOwningVector<&ActionBase::DeleteExpr> ConvertedConstructorArgs(*this);
-
Constructor = PerformInitializationByConstructor(
AllocType, move(ConstructorArgs),
TypeLoc,
OpenPOWER on IntegriCloud