aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Demangle/MicrosoftDemangle.cpp
diff options
context:
space:
mode:
authorZachary Turner <zturner@google.com>2018-08-20 23:58:35 +0000
committerZachary Turner <zturner@google.com>2018-08-20 23:58:35 +0000
commit91c98a858c00cd9fab5689801aaeb8c70a2ad135 (patch)
treee411f33b6e272cb3cc98858494c6f2a4928400c9 /llvm/lib/Demangle/MicrosoftDemangle.cpp
parentf0fe359bc330173e2656beb1f7425c5d3b6dacb7 (diff)
downloadllvm-91c98a858c00cd9fab5689801aaeb8c70a2ad135.zip
llvm-91c98a858c00cd9fab5689801aaeb8c70a2ad135.tar.gz
llvm-91c98a858c00cd9fab5689801aaeb8c70a2ad135.tar.bz2
[MS Demangler] Properly demangle anonymous namespaces.
llvm-svn: 340237
Diffstat (limited to 'llvm/lib/Demangle/MicrosoftDemangle.cpp')
-rw-r--r--llvm/lib/Demangle/MicrosoftDemangle.cpp12
1 files changed, 7 insertions, 5 deletions
diff --git a/llvm/lib/Demangle/MicrosoftDemangle.cpp b/llvm/lib/Demangle/MicrosoftDemangle.cpp
index e7872b3..8b253bf 100644
--- a/llvm/lib/Demangle/MicrosoftDemangle.cpp
+++ b/llvm/lib/Demangle/MicrosoftDemangle.cpp
@@ -2165,11 +2165,13 @@ Name *Demangler::demangleAnonymousNamespaceName(StringView &MangledName) {
Name *Node = Arena.alloc<Name>();
Node->Str = "`anonymous namespace'";
- if (MangledName.consumeFront('@'))
- return Node;
-
- Error = true;
- return nullptr;
+ size_t EndPos = MangledName.find('@');
+ if (EndPos == StringView::npos) {
+ Error = true;
+ return nullptr;
+ }
+ MangledName = MangledName.substr(EndPos + 1);
+ return Node;
}
Name *Demangler::demangleLocallyScopedNamePiece(StringView &MangledName) {