Skip to content

Commit c443ae8

Browse files
committed
[5.9][Runtime] Gracefully handle null genericArgs in SubstGenericParametersFromMetadata.
If a caller passes NULL generic parameters when looking up a generic type, we'll error and return NULL instead of crashing. rdar://112153818 (cherry picked from commit b7f73cd)
1 parent 454b98e commit c443ae8

File tree

1 file changed

+8
-0
lines changed

1 file changed

+8
-0
lines changed

stdlib/public/runtime/MetadataLookup.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3058,6 +3058,10 @@ void SubstGenericParametersFromMetadata::setup() const {
30583058
MetadataOrPack
30593059
SubstGenericParametersFromMetadata::getMetadata(
30603060
unsigned depth, unsigned index) const {
3061+
// Don't attempt anything if we have no generic parameters.
3062+
if (genericArgs == nullptr)
3063+
return MetadataOrPack();
3064+
30613065
// On first access, compute the descriptor path.
30623066
setup();
30633067

@@ -3099,6 +3103,10 @@ SubstGenericParametersFromMetadata::getMetadata(
30993103
const WitnessTable *
31003104
SubstGenericParametersFromMetadata::getWitnessTable(const Metadata *type,
31013105
unsigned index) const {
3106+
// Don't attempt anything if we have no generic parameters.
3107+
if (genericArgs == nullptr)
3108+
return nullptr;
3109+
31023110
// On first access, compute the descriptor path.
31033111
setup();
31043112

0 commit comments

Comments
 (0)