aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/ExtractAPI/DeclarationFragments.cpp
diff options
context:
space:
mode:
authorAugie Fackler <augie@google.com>2023-08-02 14:37:32 -0400
committerAugie Fackler <augie@google.com>2023-08-02 14:38:08 -0400
commitf4de606ef271fe362f03d30c53a850f9877ec238 (patch)
treefebbe0b2ea0cc64f3e2fb858d325e2490340d652 /clang/lib/ExtractAPI/DeclarationFragments.cpp
parent11b7ce26f2a22ca147feaaf1cfd2d21b85fc3d83 (diff)
downloadllvm-f4de606ef271fe362f03d30c53a850f9877ec238.zip
llvm-f4de606ef271fe362f03d30c53a850f9877ec238.tar.gz
llvm-f4de606ef271fe362f03d30c53a850f9877ec238.tar.bz2
fix use-after-free introduced in 8b76b44e46ac
ASan catches this easily enough.
Diffstat (limited to 'clang/lib/ExtractAPI/DeclarationFragments.cpp')
-rw-r--r--clang/lib/ExtractAPI/DeclarationFragments.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/clang/lib/ExtractAPI/DeclarationFragments.cpp b/clang/lib/ExtractAPI/DeclarationFragments.cpp
index ea72835..375bdfbb 100644
--- a/clang/lib/ExtractAPI/DeclarationFragments.cpp
+++ b/clang/lib/ExtractAPI/DeclarationFragments.cpp
@@ -606,7 +606,7 @@ DeclarationFragments
DeclarationFragmentsBuilder::getFragmentsForSpecialCXXMethod(
const CXXMethodDecl *Method) {
DeclarationFragments Fragments;
- StringRef Name;
+ std::string Name;
if (isa<CXXConstructorDecl>(Method)) {
auto *Constructor = dyn_cast<CXXConstructorDecl>(Method);
Name = cast<CXXRecordDecl>(Constructor->getDeclContext())->getName();
@@ -614,7 +614,7 @@ DeclarationFragmentsBuilder::getFragmentsForSpecialCXXMethod(
Fragments.append("explicit", DeclarationFragments::FragmentKind::Keyword)
.appendSpace();
} else if (isa<CXXDestructorDecl>(Method))
- Name = StringRef(Method->getNameAsString());
+ Name = Method->getNameAsString();
DeclarationFragments After;
Fragments.append(Name, DeclarationFragments::FragmentKind::Identifier)