Use unique_ptr for cached tokens for default arguments in C++.
authorMalcolm Parsons <malcolm.parsons@gmail.com>
Thu, 17 Nov 2016 17:52:58 +0000 (17:52 +0000)
committerMalcolm Parsons <malcolm.parsons@gmail.com>
Thu, 17 Nov 2016 17:52:58 +0000 (17:52 +0000)
commitff0382c16190cd2b1bc47b27c5db0570b90f1d39
tree3d7dd8e1381692ecbc3960d7ec2220016dc48acb
parent97ff7672aa58e14427630c49e53f75e02ce82245
Use unique_ptr for cached tokens for default arguments in C++.

Summary:
This changes pointers to cached tokens for default arguments in C++ from raw pointers to unique_ptrs.  There was a fixme in the code where the cached tokens are created  about using a smart pointer.

The change is straightforward, though I did have to track down and fix a memory corruption caused by the change.  memcpy was being used to copy parameter information.  This duplicated the unique_ptr, which led to the cached token buffer being deleted prematurely.

Patch by David Tarditi!

Reviewers: malcolm.parsons

Subscribers: arphaman, malcolm.parsons, cfe-commits

Differential Revision: https://reviews.llvm.org/D26435

llvm-svn: 287241
clang/include/clang/Parse/Parser.h
clang/include/clang/Sema/DeclSpec.h
clang/lib/Parse/ParseCXXInlineMethods.cpp
clang/lib/Parse/ParseDecl.cpp
clang/lib/Parse/ParseDeclCXX.cpp
clang/lib/Sema/DeclSpec.cpp
clang/lib/Sema/SemaDeclCXX.cpp