Index: llvm/trunk/lib/Demangle/MicrosoftDemangle.cpp =================================================================== --- llvm/trunk/lib/Demangle/MicrosoftDemangle.cpp +++ llvm/trunk/lib/Demangle/MicrosoftDemangle.cpp @@ -1949,7 +1949,7 @@ 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; } Index: llvm/trunk/test/Demangle/invalid-manglings.test =================================================================== --- llvm/trunk/test/Demangle/invalid-manglings.test +++ llvm/trunk/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