aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/AST/Mangle.cpp
diff options
context:
space:
mode:
authorAaron Ballman <aaron@aaronballman.com>2025-04-29 07:55:32 -0400
committerGitHub <noreply@github.com>2025-04-29 07:55:32 -0400
commitc5bf901b1b2804eede51b07d9d171c5656dd49fa (patch)
treeb36809ba0c3c954e8699a76fd8495df2de318858 /clang/lib/AST/Mangle.cpp
parent0b5daeb2e55e21eb8af9ca504fca82b82a27e1aa (diff)
downloadllvm-c5bf901b1b2804eede51b07d9d171c5656dd49fa.zip
llvm-c5bf901b1b2804eede51b07d9d171c5656dd49fa.tar.gz
llvm-c5bf901b1b2804eede51b07d9d171c5656dd49fa.tar.bz2
Fix crash with -ast-dump=json (#137324)
When given an invalid Objective-C extension, Clang would crash when trying to emit the mangled name of the method to the JSON dump output. Fixes #137320
Diffstat (limited to 'clang/lib/AST/Mangle.cpp')
-rw-r--r--clang/lib/AST/Mangle.cpp8
1 files changed, 5 insertions, 3 deletions
diff --git a/clang/lib/AST/Mangle.cpp b/clang/lib/AST/Mangle.cpp
index 141957c..741c031 100644
--- a/clang/lib/AST/Mangle.cpp
+++ b/clang/lib/AST/Mangle.cpp
@@ -367,9 +367,11 @@ void MangleContext::mangleObjCMethodName(const ObjCMethodDecl *MD,
}
OS << (MD->isInstanceMethod() ? '-' : '+') << '[';
if (const auto *CID = MD->getCategory()) {
- OS << CID->getClassInterface()->getName();
- if (includeCategoryNamespace) {
- OS << '(' << *CID << ')';
+ if (const auto *CI = CID->getClassInterface()) {
+ OS << CI->getName();
+ if (includeCategoryNamespace) {
+ OS << '(' << *CID << ')';
+ }
}
} else if (const auto *CD =
dyn_cast<ObjCContainerDecl>(MD->getDeclContext())) {