diff options
author | Nico Weber <nicolasweber@gmx.de> | 2014-05-10 19:23:28 +0000 |
---|---|---|
committer | Nico Weber <nicolasweber@gmx.de> | 2014-05-10 19:23:28 +0000 |
commit | e2b5e4020346ba67dacf423a2dac5e5062d465d9 (patch) | |
tree | 8a133eac421df9ba2e4a70036f1b6a02924a2128 /clang | |
parent | 29c0c210fc7ec3490bf2de3d4225f620543bced8 (diff) | |
download | bcm5719-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.h | 4 |
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; |