summaryrefslogtreecommitdiffstats
path: root/clang
diff options
context:
space:
mode:
authorNico Weber <nicolasweber@gmx.de>2014-05-10 19:23:28 +0000
committerNico Weber <nicolasweber@gmx.de>2014-05-10 19:23:28 +0000
commite2b5e4020346ba67dacf423a2dac5e5062d465d9 (patch)
tree8a133eac421df9ba2e4a70036f1b6a02924a2128 /clang
parent29c0c210fc7ec3490bf2de3d4225f620543bced8 (diff)
downloadbcm5719-llvm-e2b5e4020346ba67dacf423a2dac5e5062d465d9.tar.gz
bcm5719-llvm-e2b5e4020346ba67dacf423a2dac5e5062d465d9.zip
Don't leak default arg tokens on invalid destructors or conversion functions.
Fixes PR19689, and possibly the last leak in clang (PR19521). PR19689 contains a few suggestions on how to make the default argument token code a bit more solid, these changes can possibly be landed in follow-ups. llvm-svn: 208481
Diffstat (limited to 'clang')
-rw-r--r--clang/include/clang/Sema/DeclSpec.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/clang/include/clang/Sema/DeclSpec.h b/clang/include/clang/Sema/DeclSpec.h
index 845e7513518..493f68708a4 100644
--- a/clang/include/clang/Sema/DeclSpec.h
+++ b/clang/include/clang/Sema/DeclSpec.h
@@ -1231,6 +1231,10 @@ struct DeclaratorChunk {
///
/// This is used in various places for error recovery.
void freeParams() {
+ if (Params) {
+ delete Params->DefaultArgTokens;
+ Params->DefaultArgTokens = nullptr;
+ }
if (DeleteParams) {
delete[] Params;
DeleteParams = false;
OpenPOWER on IntegriCloud