summaryrefslogtreecommitdiff
path: root/demangler/gnu3/demangle_gnu3.cpp
diff options
context:
space:
mode:
authorGlenn Smith <glenn@vector35.com>2024-11-21 17:09:57 -0500
committerGlenn Smith <glenn@vector35.com>2024-11-21 17:09:57 -0500
commit3617086969462676272786827089388047502883 (patch)
treef0cce58ef1c73b11847719799e06aab6597e3f12 /demangler/gnu3/demangle_gnu3.cpp
parentd707b4012c516e1aa15e0cc4b0b01ebdd3a7d184 (diff)
Fix gnu3 demangler losing track of NTR ids
Diffstat (limited to 'demangler/gnu3/demangle_gnu3.cpp')
-rw-r--r--demangler/gnu3/demangle_gnu3.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/demangler/gnu3/demangle_gnu3.cpp b/demangler/gnu3/demangle_gnu3.cpp
index fdef5b8f..26dc99fe 100644
--- a/demangler/gnu3/demangle_gnu3.cpp
+++ b/demangler/gnu3/demangle_gnu3.cpp
@@ -88,7 +88,9 @@ static void ExtendTypeName(TypeBuilder& type, const string& extend)
qn.back() += extend;
else
qn.push_back(extend);
- type.SetTypeName(qn);
+ type.SetNamedTypeReference(
+ NamedTypeReference::GenerateAutoDemangledTypeReference(type.GetNamedTypeReference()->GetTypeReferenceClass(), qn)
+ );
}
@@ -1770,7 +1772,9 @@ TypeBuilder DemangleGNU3::DemangleNestedName()
QualifiedName newName = type.GetTypeName() + newType.GetTypeName();
if (newName.StringSize() > MAX_DEMANGLE_LENGTH)
throw DemangleException("Detected adversarial mangled string");
- type.SetTypeName(newName);
+ type.SetNamedTypeReference(
+ NamedTypeReference::GenerateAutoDemangledTypeReference(type.GetNamedTypeReference()->GetTypeReferenceClass(), newName)
+ );
type.SetHasTemplateArguments(false);
}
if (substitute && m_reader.Peek() != 'E')