Author: Alex Richardson Date: 2020-06-11T22:23:33+01:00 New Revision: 385e5f7e147fcf792085b365cc48380850612025
URL: https://github.com/llvm/llvm-project/commit/385e5f7e147fcf792085b365cc48380850612025 DIFF: https://github.com/llvm/llvm-project/commit/385e5f7e147fcf792085b365cc48380850612025.diff LOG: Fix incorrect call to ExprResult::get() Res is already a ExprResult, so if we call .get(), we will convert an ExprError() result into an unset result. I discovered this in our downstream CHERI target where this resulted in a crash due to a NULL-dereference. It appears that this was introduced in SVN revision 201788 (8690a6860a45ba36e39b4ff0dbe434195e125d11) Reviewed By: Anastasia Differential Revision: https://reviews.llvm.org/D81608 Added: Modified: clang/lib/Sema/SemaExpr.cpp Removed: ################################################################################ diff --git a/clang/lib/Sema/SemaExpr.cpp b/clang/lib/Sema/SemaExpr.cpp index 0537d09a09eb..6477979e92fe 100644 --- a/clang/lib/Sema/SemaExpr.cpp +++ b/clang/lib/Sema/SemaExpr.cpp @@ -724,7 +724,7 @@ ExprResult Sema::CallExprUnaryConversions(Expr *E) { // to function type. if (Ty->isFunctionType()) { Res = ImpCastExprToType(E, Context.getPointerType(Ty), - CK_FunctionToPointerDecay).get(); + CK_FunctionToPointerDecay); if (Res.isInvalid()) return ExprError(); } _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits