summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema
diff options
context:
space:
mode:
authorManuel Klimek <klimek@google.com>2013-09-30 13:29:01 +0000
committerManuel Klimek <klimek@google.com>2013-09-30 13:29:01 +0000
commit5843add31e1d5e66573f7b912512faaef728267b (patch)
treec18acf43c485189747f56da6bd3079dd80409f2d /clang/lib/Sema
parent38c4ef68d87e0235b71e398a20805f4d4ce1e726 (diff)
downloadbcm5719-llvm-5843add31e1d5e66573f7b912512faaef728267b.tar.gz
bcm5719-llvm-5843add31e1d5e66573f7b912512faaef728267b.zip
Fix use-after-free.
TemplateDeclInstantiator takes the MultiLevelArgumentList by const-ref and stores a const-ref member. Thus, we must not pass a temporary into the constructor. llvm-svn: 191665
Diffstat (limited to 'clang/lib/Sema')
-rw-r--r--clang/lib/Sema/SemaTemplateInstantiateDecl.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp b/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp
index 8d384b915b4..35f3616db6a 100644
--- a/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp
+++ b/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp
@@ -3312,9 +3312,9 @@ VarTemplateSpecializationDecl *Sema::BuildVarTemplateInstantiation(
// we want to instantiate a definition.
FromVar = FromVar->getFirstDeclaration();
- TemplateDeclInstantiator Instantiator(
- *this, FromVar->getDeclContext(),
- MultiLevelTemplateArgumentList(TemplateArgList));
+ MultiLevelTemplateArgumentList MultiLevelList(TemplateArgList);
+ TemplateDeclInstantiator Instantiator(*this, FromVar->getDeclContext(),
+ MultiLevelList);
// TODO: Set LateAttrs and StartingScope ...
OpenPOWER on IntegriCloud