Skip to content

Commit

Permalink
Merge pull request #6759 from ObsidianMinor/csharp/extension-length-c…
Browse files Browse the repository at this point in the history
…hecks

Add length checks to ExtensionCollection
  • Loading branch information
jtattermusch committed Oct 22, 2019
2 parents 912d819 + f50bc62 commit c08b751
Showing 1 changed file with 20 additions and 2 deletions.
22 changes: 20 additions & 2 deletions csharp/src/Google.Protobuf/Reflection/ExtensionCollection.cs
Expand Up @@ -48,14 +48,32 @@ internal ExtensionCollection(FileDescriptor file, Extension[] extensions)
{
UnorderedExtensions = DescriptorUtil.ConvertAndMakeReadOnly(
file.Proto.Extension,
(extension, i) => new FieldDescriptor(extension, file, null, i, null, extensions?[i]));
(extension, i) => {
if (extensions?.Length != 0)
{
return new FieldDescriptor(extension, file, null, i, null, extensions?[i]);
}
else
{
return new FieldDescriptor(extension, file, null, i, null, null); // return null if there's no extensions in this array for old code-gen
}
});
}

internal ExtensionCollection(MessageDescriptor message, Extension[] extensions)
{
UnorderedExtensions = DescriptorUtil.ConvertAndMakeReadOnly(
message.Proto.Extension,
(extension, i) => new FieldDescriptor(extension, message.File, message, i, null, extensions?[i]));
(extension, i) => {
if (extensions?.Length != 0)
{
return new FieldDescriptor(extension, message.File, message, i, null, extensions?[i]);
}
else
{
return new FieldDescriptor(extension, message.File, message, i, null, null);
}
});
}

/// <summary>
Expand Down

0 comments on commit c08b751

Please sign in to comment.