From 75ac27dc3d459382d940583ea594f0bb710fcb15 Mon Sep 17 00:00:00 2001 From: Michael Spencer Date: Tue, 1 Jul 2025 17:39:42 -0700 Subject: [PATCH] [ClangImporter] Fix dangling reference. LookupOverloadedBinOp stores `Args` for later use, so store the backing array on the stack instead of using a temporary. This fixes a crash that appeared under some build configurations. Related to rdar://154291418 --- lib/ClangImporter/ClangDerivedConformances.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/ClangImporter/ClangDerivedConformances.cpp b/lib/ClangImporter/ClangDerivedConformances.cpp index c54a3ecd1e995..4c9ef90402dfb 100644 --- a/lib/ClangImporter/ClangDerivedConformances.cpp +++ b/lib/ClangImporter/ClangDerivedConformances.cpp @@ -265,7 +265,8 @@ instantiateTemplatedOperator(ClangImporter::Implementation &impl, classDecl->getLocation(), clang::OverloadCandidateSet::CSK_Operator, clang::OverloadCandidateSet::OperatorRewriteInfo(opKind, clang::SourceLocation(), false)); - clangSema.LookupOverloadedBinOp(candidateSet, opKind, ops, {arg, arg}, true); + std::array args{arg, arg}; + clangSema.LookupOverloadedBinOp(candidateSet, opKind, ops, args, true); clang::OverloadCandidateSet::iterator best; switch (candidateSet.BestViableFunction(clangSema, clang::SourceLocation(),