summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaTemplateDeduction.cpp
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2010-05-09 01:26:06 +0000
committerDouglas Gregor <dgregor@apple.com>2010-05-09 01:26:06 +0000
commit62c281a8733a9adbb5e8c1d8e65e19ac5a9ff977 (patch)
tree0f9ae9563708726635c26b310a5d3553e92cc03f /clang/lib/Sema/SemaTemplateDeduction.cpp
parente0b5b3a1c5c09535bd51eab3654ea03641fff5a5 (diff)
downloadbcm5719-llvm-62c281a8733a9adbb5e8c1d8e65e19ac5a9ff977.tar.gz
bcm5719-llvm-62c281a8733a9adbb5e8c1d8e65e19ac5a9ff977.zip
Be more careful about picking a template parameter when we fail to substitute explicit template arguments into a function template
llvm-svn: 103369
Diffstat (limited to 'clang/lib/Sema/SemaTemplateDeduction.cpp')
-rw-r--r--clang/lib/Sema/SemaTemplateDeduction.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/clang/lib/Sema/SemaTemplateDeduction.cpp b/clang/lib/Sema/SemaTemplateDeduction.cpp
index aca820dec6e..b85f2bd422d 100644
--- a/clang/lib/Sema/SemaTemplateDeduction.cpp
+++ b/clang/lib/Sema/SemaTemplateDeduction.cpp
@@ -1189,8 +1189,10 @@ Sema::SubstituteExplicitTemplateArguments(
ExplicitTemplateArgs,
true,
Builder) || Trap.hasErrorOccurred()) {
- Info.Param = makeTemplateParameter(TemplateParams->getParam(
- Builder.structuredSize()));
+ unsigned Index = Builder.structuredSize();
+ if (Index >= TemplateParams->size())
+ Index = TemplateParams->size() - 1;
+ Info.Param = makeTemplateParameter(TemplateParams->getParam(Index));
return TDK_InvalidExplicitArguments;
}
OpenPOWER on IntegriCloud