diff options
author | Manuel Klimek <klimek@google.com> | 2013-09-30 13:29:01 +0000 |
---|---|---|
committer | Manuel Klimek <klimek@google.com> | 2013-09-30 13:29:01 +0000 |
commit | 5843add31e1d5e66573f7b912512faaef728267b (patch) | |
tree | c18acf43c485189747f56da6bd3079dd80409f2d /clang/lib/Sema | |
parent | 38c4ef68d87e0235b71e398a20805f4d4ce1e726 (diff) | |
download | bcm5719-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.cpp | 6 |
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 ... |