From 9d91e03b7d075239483e9a5793e1e5db9152bdf1 Mon Sep 17 00:00:00 2001 From: Simon Pilgrim Date: Wed, 23 Feb 2022 10:09:40 +0000 Subject: [PATCH] [clang] CIndex.cpp - use cast<> instead of dyn_cast<> to avoid dereference of nullptr The pointers are used immediately, so assert the cast is correct instead of returning nullptr --- clang/tools/libclang/CIndex.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/clang/tools/libclang/CIndex.cpp b/clang/tools/libclang/CIndex.cpp index 53494ec..e77b85d 100644 --- a/clang/tools/libclang/CIndex.cpp +++ b/clang/tools/libclang/CIndex.cpp @@ -4010,7 +4010,7 @@ static const ExprEvalResult *evaluateExpr(Expr *expr, CXCursor C) { } if (expr->getStmtClass() == Stmt::ImplicitCastExprClass) { - const ImplicitCastExpr *I = dyn_cast(expr); + const auto *I = cast(expr); auto *subExpr = I->getSubExprAsWritten(); if (subExpr->getStmtClass() == Stmt::StringLiteralClass || subExpr->getStmtClass() == Stmt::ObjCStringLiteralClass) { @@ -6740,8 +6740,8 @@ void clang_getDefinitionSpellingAndExtent( CXCursor C, const char **startBuf, const char **endBuf, unsigned *startLine, unsigned *startColumn, unsigned *endLine, unsigned *endColumn) { assert(getCursorDecl(C) && "CXCursor has null decl"); - const FunctionDecl *FD = dyn_cast(getCursorDecl(C)); - CompoundStmt *Body = dyn_cast(FD->getBody()); + const auto *FD = cast(getCursorDecl(C)); + const auto *Body = cast(FD->getBody()); SourceManager &SM = FD->getASTContext().getSourceManager(); *startBuf = SM.getCharacterData(Body->getLBracLoc()); @@ -8289,7 +8289,7 @@ unsigned clang_Cursor_getObjCPropertyAttributes(CXCursor C, unsigned reserved) { return CXObjCPropertyAttr_noattr; unsigned Result = CXObjCPropertyAttr_noattr; - const ObjCPropertyDecl *PD = dyn_cast(getCursorDecl(C)); + const auto *PD = cast(getCursorDecl(C)); ObjCPropertyAttribute::Kind Attr = PD->getPropertyAttributesAsWritten(); #define SET_CXOBJCPROP_ATTR(A) \ @@ -8317,7 +8317,7 @@ CXString clang_Cursor_getObjCPropertyGetterName(CXCursor C) { if (C.kind != CXCursor_ObjCPropertyDecl) return cxstring::createNull(); - const ObjCPropertyDecl *PD = dyn_cast(getCursorDecl(C)); + const auto *PD = cast(getCursorDecl(C)); Selector sel = PD->getGetterName(); if (sel.isNull()) return cxstring::createNull(); @@ -8329,7 +8329,7 @@ CXString clang_Cursor_getObjCPropertySetterName(CXCursor C) { if (C.kind != CXCursor_ObjCPropertyDecl) return cxstring::createNull(); - const ObjCPropertyDecl *PD = dyn_cast(getCursorDecl(C)); + const auto *PD = cast(getCursorDecl(C)); Selector sel = PD->getSetterName(); if (sel.isNull()) return cxstring::createNull(); -- 2.7.4