diff options
author | Aaron Ballman <aaron@aaronballman.com> | 2025-04-29 07:55:32 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-04-29 07:55:32 -0400 |
commit | c5bf901b1b2804eede51b07d9d171c5656dd49fa (patch) | |
tree | b36809ba0c3c954e8699a76fd8495df2de318858 /clang/lib/AST/Mangle.cpp | |
parent | 0b5daeb2e55e21eb8af9ca504fca82b82a27e1aa (diff) | |
download | llvm-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.cpp | 8 |
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())) { |