forked from OSchip/llvm-project
Harden Clang's cursor visitation logic against NULL declaration,
statement, and expression pointers. While these shouldn't happen, it's better to be safe in libclang. llvm-svn: 129539
This commit is contained in:
parent
92651ec374
commit
7df2126000
|
@ -494,14 +494,25 @@ bool CursorVisitor::VisitChildren(CXCursor Cursor) {
|
|||
|
||||
if (clang_isDeclaration(Cursor.kind)) {
|
||||
Decl *D = getCursorDecl(Cursor);
|
||||
assert(D && "Invalid declaration cursor");
|
||||
if (!D)
|
||||
return false;
|
||||
|
||||
return VisitAttributes(D) || Visit(D);
|
||||
}
|
||||
|
||||
if (clang_isStatement(Cursor.kind))
|
||||
return Visit(getCursorStmt(Cursor));
|
||||
if (clang_isExpression(Cursor.kind))
|
||||
return Visit(getCursorExpr(Cursor));
|
||||
if (clang_isStatement(Cursor.kind)) {
|
||||
if (Stmt *S = getCursorStmt(Cursor))
|
||||
return Visit(S);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
if (clang_isExpression(Cursor.kind)) {
|
||||
if (Expr *E = getCursorExpr(Cursor))
|
||||
return Visit(E);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
if (clang_isTranslationUnit(Cursor.kind)) {
|
||||
CXTranslationUnit tu = getCursorTU(Cursor);
|
||||
|
|
Loading…
Reference in New Issue