diff --git a/include/swift/Reflection/TypeRefBuilder.h b/include/swift/Reflection/TypeRefBuilder.h index daf75a68b3e89..b0458c6896cf0 100644 --- a/include/swift/Reflection/TypeRefBuilder.h +++ b/include/swift/Reflection/TypeRefBuilder.h @@ -571,8 +571,13 @@ class TypeRefBuilder { auto numGenericArgs = genericParamsPerLevel[shapeIndex]; + auto startOffsetFromEnd = argsIndex + numGenericArgs; + auto endOffsetFromEnd = argsIndex; + if (startOffsetFromEnd > args.size() || endOffsetFromEnd > args.size()) + return nullptr; + std::vector genericParams( - args.end() - argsIndex - numGenericArgs, args.end() - argsIndex); + args.end() - startOffsetFromEnd, args.end() - endOffsetFromEnd); const BoundGenericTypeRef *parent = nullptr; if (node->hasChildren()) {