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
diff --git a/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp b/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp
index 8d384b9..35f3616 100644
--- a/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp
+++ b/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp
@@ -3312,9 +3312,9 @@
// 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 ...