]> granicus.if.org Git - clang/commitdiff
Be more careful about picking a template parameter when we fail to substitute explici...
authorDouglas Gregor <dgregor@apple.com>
Sun, 9 May 2010 01:26:06 +0000 (01:26 +0000)
committerDouglas Gregor <dgregor@apple.com>
Sun, 9 May 2010 01:26:06 +0000 (01:26 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103369 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Sema/SemaTemplateDeduction.cpp

index aca820dec6e77025f027fcb86639b1ed860bfab5..b85f2bd422d621ad80f78a5425e33cf4e4442888 100644 (file)
@@ -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;
   }