diff options
| author | Glenn Smith <glenn@vector35.com> | 2024-11-21 17:09:57 -0500 |
|---|---|---|
| committer | Glenn Smith <glenn@vector35.com> | 2024-11-21 17:09:57 -0500 |
| commit | 3617086969462676272786827089388047502883 (patch) | |
| tree | f0cce58ef1c73b11847719799e06aab6597e3f12 /demangler/gnu3/demangle_gnu3.cpp | |
| parent | d707b4012c516e1aa15e0cc4b0b01ebdd3a7d184 (diff) | |
Fix gnu3 demangler losing track of NTR ids
Diffstat (limited to 'demangler/gnu3/demangle_gnu3.cpp')
| -rw-r--r-- | demangler/gnu3/demangle_gnu3.cpp | 8 |
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') |
