summaryrefslogtreecommitdiff
path: root/libcxxabi/src/cxa_demangle.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libcxxabi/src/cxa_demangle.cpp')
-rw-r--r--libcxxabi/src/cxa_demangle.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/libcxxabi/src/cxa_demangle.cpp b/libcxxabi/src/cxa_demangle.cpp
index 05bdc18e3a3..5261363c360 100644
--- a/libcxxabi/src/cxa_demangle.cpp
+++ b/libcxxabi/src/cxa_demangle.cpp
@@ -2639,6 +2639,8 @@ Node *Db::parseCtorDtorName(Node *&SoFar, NameState *State) {
// ::= <prefix> <data-member-prefix>
// extension ::= L
//
+// <data-member-prefix> := <member source-name> [<template-args>] M
+//
// <template-prefix> ::= <prefix> <template unqualified-name>
// ::= <template-param>
// ::= <substitution>
@@ -2669,6 +2671,13 @@ Node *Db::parseNestedName(NameState *State) {
while (!consumeIf('E')) {
consumeIf('L'); // extension
+ // <data-member-prefix> := <member source-name> [<template-args>] M
+ if (consumeIf('M')) {
+ if (SoFar == nullptr)
+ return nullptr;
+ continue;
+ }
+
// ::= <template-param>
if (look() == 'T') {
Node *TP = parseTemplateParam();