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 653c76e052f..49fa7324ef9 100644 --- a/llvm/lib/Demangle/MicrosoftDemangle.cpp +++ b/llvm/lib/Demangle/MicrosoftDemangle.cpp @@ -1949,7 +1949,7 @@ ArrayTypeNode *Demangler::demangleArrayType(StringView &MangledName) { for (uint64_t I = 0; I < Rank; ++I) { uint64_t D = 0; std::tie(D, IsNegative) = demangleNumber(MangledName); - if (IsNegative) { + if (Error || IsNegative) { Error = true; return nullptr; } diff --git a/llvm/test/Demangle/invalid-manglings.test b/llvm/test/Demangle/invalid-manglings.test index 5c26ca421bf..7a7d8ee0734 100644 --- a/llvm/test/Demangle/invalid-manglings.test +++ b/llvm/test/Demangle/invalid-manglings.test @@ -24,3 +24,8 @@ ; CHECK-EMPTY: ; CHECK-NEXT: ??0@ ; CHECK-NEXT: error: Invalid mangled name + +? @@ YC@ +; CHECK-EMPTY: +; CHECK-NEXT: ? @@ YC@ +; CHECK-NEXT: error: Invalid mangled name |