diff options
Diffstat (limited to 'lib/AST/Decl.cpp')
-rw-r--r-- | lib/AST/Decl.cpp | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/lib/AST/Decl.cpp b/lib/AST/Decl.cpp index 4593c6f0e5..25687e15c4 100644 --- a/lib/AST/Decl.cpp +++ b/lib/AST/Decl.cpp @@ -567,7 +567,8 @@ void DeclaratorDecl::setQualifierInfo(NestedNameSpecifier *Qualifier, } void -QualifierInfo::setTemplateParameterListsInfo(unsigned NumTPLists, +QualifierInfo::setTemplateParameterListsInfo(ASTContext &Context, + unsigned NumTPLists, TemplateParameterList **TPLists) { assert((NumTPLists == 0 || TPLists != 0) && "Empty array of template parameters with positive size!"); @@ -576,19 +577,25 @@ QualifierInfo::setTemplateParameterListsInfo(unsigned NumTPLists, // Free previous template parameters (if any). if (NumTemplParamLists > 0) { - delete[] TemplParamLists; + Context.Deallocate(TemplParamLists); TemplParamLists = 0; NumTemplParamLists = 0; } // Set info on matched template parameter lists (if any). if (NumTPLists > 0) { - TemplParamLists = new TemplateParameterList*[NumTPLists]; + TemplParamLists = new (Context) TemplateParameterList*[NumTPLists]; NumTemplParamLists = NumTPLists; for (unsigned i = NumTPLists; i-- > 0; ) TemplParamLists[i] = TPLists[i]; } } +void QualifierInfo::Destroy(ASTContext &Context) { + // FIXME: Deallocate template parameter lists themselves! + if (TemplParamLists) + Context.Deallocate(TemplParamLists); +} + //===----------------------------------------------------------------------===// // VarDecl Implementation //===----------------------------------------------------------------------===// |