Skip to content

Commit 65f9ade

Browse files
committed
Handle CXXDeductionGuide in ReSubstTemplateArg.
This fixes ROOT-9147. Also avoid future cases of nullptr dereference
1 parent 6c291c6 commit 65f9ade

File tree

1 file changed

+3
-1
lines changed

1 file changed

+3
-1
lines changed

core/clingutils/src/TClingUtils.cxx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4585,11 +4585,13 @@ clang::QualType ROOT::TMetaUtils::ReSubstTemplateArg(clang::QualType input, cons
45854585
} else {
45864586
replacedCtxt = decl->getDescribedClassTemplate();
45874587
}
4588+
} else if (auto const declguide = llvm::dyn_cast<clang::CXXDeductionGuideDecl>(replacedDeclCtxt)) {
4589+
replacedCtxt = llvm::dyn_cast<clang::ClassTemplateDecl>(declguide->getDeducedTemplate());
45884590
} else {
45894591
replacedCtxt = llvm::dyn_cast<clang::ClassTemplateDecl>(replacedDeclCtxt);
45904592
}
45914593

4592-
if (replacedCtxt->getCanonicalDecl() == TSTdecl->getSpecializedTemplate()->getCanonicalDecl()
4594+
if ((replacedCtxt && replacedCtxt->getCanonicalDecl() == TSTdecl->getSpecializedTemplate()->getCanonicalDecl())
45934595
|| /* the following is likely just redundant */
45944596
substType->getReplacedParameter()->getDecl()
45954597
== TSTdecl->getSpecializedTemplate ()->getTemplateParameters()->getParam(index))

0 commit comments

Comments
 (0)