Reported by Static Analyzer Tool, Coverity:
Inside "SemaDeclCXX.cpp" file, in clang::Sema::CheckExplicitlyDefaultedSpecialMember(clang::CXXMethodDecl *, clang::Sema::CXXSpecialMember, clang::SourceLocation): Return value of function which returns null is dereferenced without checking.
//returned_null: getAs returns nullptr (checked 117 out of 143 times). // var_assigned: Assigning: Type = nullptr return value from getAs. const FunctionProtoType *Type = MD->getType()->getAs<FunctionProtoType>(); //Dereference null return value (NULL_RETURNS) //dereference: Dereferencing a pointer that might be nullptr Type when calling getReturnType. ReturnType = Type->getReturnType(); //Dereference null return value (NULL_RETURNS) //dereference: Dereferencing a pointer that might be nullptr Type when calling getParamType. QualType ArgType = ExpectedParams ? Type->getParamType(0) : QualType();
This patch uses castAs instead of getAs which will assert if the type doesn't match.