diff options
author | Kirill Stoimenov <kstoimenov@google.com> | 2022-04-26 20:24:06 +0000 |
---|---|---|
committer | Kirill Stoimenov <kstoimenov@google.com> | 2022-04-26 20:24:06 +0000 |
commit | aabeb5eb7f0aaa2c80147d904959c882cdeba1e5 (patch) | |
tree | c2cbd63fa7047f616693b1613147c35fbb38f1a3 /llvm/lib/Demangle/ItaniumDemangle.cpp | |
parent | ce8f42d4af2cf56c96f5a8cc4c4a02bf6b790ccc (diff) | |
download | llvm-aabeb5eb7f0aaa2c80147d904959c882cdeba1e5.zip llvm-aabeb5eb7f0aaa2c80147d904959c882cdeba1e5.tar.gz llvm-aabeb5eb7f0aaa2c80147d904959c882cdeba1e5.tar.bz2 |
Revert "[demangler] Simplify OutputBuffer initialization"
Reverting due to a bot failure:
https://lab.llvm.org/buildbot/#/builders/5/builds/22738
This reverts commit 5b3ca24a35e91bf9c19af856e7f92c69b17f989e.
Diffstat (limited to 'llvm/lib/Demangle/ItaniumDemangle.cpp')
-rw-r--r-- | llvm/lib/Demangle/ItaniumDemangle.cpp | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/llvm/lib/Demangle/ItaniumDemangle.cpp b/llvm/lib/Demangle/ItaniumDemangle.cpp index 9b646ea..1c9209d 100644 --- a/llvm/lib/Demangle/ItaniumDemangle.cpp +++ b/llvm/lib/Demangle/ItaniumDemangle.cpp @@ -375,12 +375,15 @@ char *llvm::itaniumDemangle(const char *MangledName, char *Buf, int InternalStatus = demangle_success; Demangler Parser(MangledName, MangledName + std::strlen(MangledName)); + OutputBuffer OB; + Node *AST = Parser.parse(); if (AST == nullptr) InternalStatus = demangle_invalid_mangled_name; + else if (!initializeOutputBuffer(Buf, N, OB, 1024)) + InternalStatus = demangle_memory_alloc_failure; else { - OutputBuffer OB(Buf, N); assert(Parser.ForwardTemplateRefs.empty()); AST->print(OB); OB += '\0'; @@ -424,7 +427,9 @@ bool ItaniumPartialDemangler::partialDemangle(const char *MangledName) { } static char *printNode(const Node *RootNode, char *Buf, size_t *N) { - OutputBuffer OB(Buf, N); + OutputBuffer OB; + if (!initializeOutputBuffer(Buf, N, OB, 128)) + return nullptr; RootNode->print(OB); OB += '\0'; if (N != nullptr) @@ -467,7 +472,9 @@ char *ItaniumPartialDemangler::getFunctionDeclContextName(char *Buf, return nullptr; const Node *Name = static_cast<const FunctionEncoding *>(RootNode)->getName(); - OutputBuffer OB(Buf, N); + OutputBuffer OB; + if (!initializeOutputBuffer(Buf, N, OB, 128)) + return nullptr; KeepGoingLocalFunction: while (true) { @@ -518,7 +525,9 @@ char *ItaniumPartialDemangler::getFunctionParameters(char *Buf, return nullptr; NodeArray Params = static_cast<FunctionEncoding *>(RootNode)->getParams(); - OutputBuffer OB(Buf, N); + OutputBuffer OB; + if (!initializeOutputBuffer(Buf, N, OB, 128)) + return nullptr; OB += '('; Params.printWithComma(OB); @@ -534,7 +543,9 @@ char *ItaniumPartialDemangler::getFunctionReturnType( if (!isFunction()) return nullptr; - OutputBuffer OB(Buf, N); + OutputBuffer OB; + if (!initializeOutputBuffer(Buf, N, OB, 128)) + return nullptr; if (const Node *Ret = static_cast<const FunctionEncoding *>(RootNode)->getReturnType()) |