зеркало из https://github.com/microsoft/clang-1.git
Fix a double free when parsing malformed code. Fixes rdar://9173693.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130775 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
0f4be74ff0
Коммит
eccce7e246
|
@ -280,8 +280,11 @@ bool Parser::ParseOptionalCXXScopeSpecifier(CXXScopeSpec &SS,
|
||||||
: TemplateId->TemplateNameLoc;
|
: TemplateId->TemplateNameLoc;
|
||||||
SS.SetInvalid(SourceRange(StartLoc, CCLoc));
|
SS.SetInvalid(SourceRange(StartLoc, CCLoc));
|
||||||
}
|
}
|
||||||
|
|
||||||
TemplateId->Destroy();
|
// If we are caching tokens we will process the TemplateId again,
|
||||||
|
// otherwise destroy it.
|
||||||
|
if (!PP.isBacktrackEnabled())
|
||||||
|
TemplateId->Destroy();
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
// RUN: %clang_cc1 -fsyntax-only -verify %s
|
||||||
|
|
||||||
|
// <rdar://problem/9173693>
|
||||||
|
template< bool C > struct assert { };
|
||||||
|
template< bool > struct assert_arg_pred_impl { }; // expected-note 3 {{declared here}}
|
||||||
|
template< typename Pred > assert<false> assert_not_arg( void (*)(Pred), typename assert_arg_pred<Pred>::type ); // expected-error 5 {{}}
|
Загрузка…
Ссылка в новой задаче