summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTamas Berghammer <tberghammer@google.com>2017-05-24 11:21:34 +0000
committerTamas Berghammer <tberghammer@google.com>2017-05-24 11:21:34 +0000
commit413296b7c32e09b1e01c21bca714c80003f4f499 (patch)
treea9e78ad42c7f75a7a71bd2230cc564e81b908f3c /src
parent0a91f7ab6633790706437fd2e76d31939aeb0025 (diff)
__cxa_demangle: Fix constructor cv qualifier handling
Summary: Previously if we parsed a constructor then we set parsed_ctor_dtor_cv to true and never reseted it. This causes issue when a template argument references a constructor (e.g. type of lambda defined inside a constructor) as we will have the parsed_ctor_dtor_cv flag set what will cause issues when parsing later arguments. Reviewers: EricWF, compnerd Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D33385 git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@303737 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'src')
-rw-r--r--src/cxa_demangle.cpp2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/cxa_demangle.cpp b/src/cxa_demangle.cpp
index 25e6b9a..fd484a4 100644
--- a/src/cxa_demangle.cpp
+++ b/src/cxa_demangle.cpp
@@ -4571,6 +4571,8 @@ parse_encoding(const char* first, const char* last, C& db)
save_value<decltype(db.tag_templates)> sb(db.tag_templates);
if (db.encoding_depth > 1)
db.tag_templates = true;
+ save_value<decltype(db.parsed_ctor_dtor_cv)> sp(db.parsed_ctor_dtor_cv);
+ db.parsed_ctor_dtor_cv = false;
switch (*first)
{
case 'G':