diff options
-rw-r--r-- | llvm/lib/Demangle/MicrosoftDemangle.cpp | 2 | ||||
-rw-r--r-- | llvm/test/Demangle/invalid-manglings.test | 5 |
2 files changed, 6 insertions, 1 deletions
diff --git a/llvm/lib/Demangle/MicrosoftDemangle.cpp b/llvm/lib/Demangle/MicrosoftDemangle.cpp index f45df9413d7..c4559ccb5e2 100644 --- a/llvm/lib/Demangle/MicrosoftDemangle.cpp +++ b/llvm/lib/Demangle/MicrosoftDemangle.cpp @@ -1907,7 +1907,7 @@ TagTypeNode *Demangler::demangleClassType(StringView &MangledName) { TT = Arena.alloc<TagTypeNode>(TagKind::Class); break; case 'W': - if (MangledName.popFront() != '4') { + if (!MangledName.consumeFront('4')) { Error = true; return nullptr; } diff --git a/llvm/test/Demangle/invalid-manglings.test b/llvm/test/Demangle/invalid-manglings.test index 4c155b765a4..839218ad101 100644 --- a/llvm/test/Demangle/invalid-manglings.test +++ b/llvm/test/Demangle/invalid-manglings.test @@ -104,3 +104,8 @@ ; CHECK-EMPTY: ; CHECK-NEXT: ??C@$ ; CHECK-NEXT: error: Invalid mangled name + +?x@@3PAW +; CHECK-EMPTY: +; CHECK-NEXT: ?x@@3PAW +; CHECK-NEXT: error: Invalid mangled name |