Skip to content

Commit

Permalink
Add some missing null-checks
Browse files Browse the repository at this point in the history
Remove IsInitialized checks accidentally left in MessageParser
Simplify ExtensionCollection.CrossLink
  • Loading branch information
ObsidianMinor committed Nov 19, 2019
1 parent 3cae867 commit 71c492d
Show file tree
Hide file tree
Showing 5 changed files with 7 additions and 21 deletions.
2 changes: 1 addition & 1 deletion csharp/src/Google.Protobuf/CodedOutputStream.cs
Expand Up @@ -89,7 +89,7 @@ public CodedOutputStream(byte[] flatArray) : this(flatArray, 0, flatArray.Length
private CodedOutputStream(byte[] buffer, int offset, int length)
{
this.output = null;
this.buffer = buffer;
this.buffer = ProtoPreconditions.CheckNotNull(buffer, nameof(buffer));
this.position = offset;
this.limit = offset + length;
leaveOpen = true; // Simple way of avoiding trying to dispose of a null reference
Expand Down
2 changes: 1 addition & 1 deletion csharp/src/Google.Protobuf/JsonFormatter.cs
Expand Up @@ -133,7 +133,7 @@ static JsonFormatter()
/// <param name="settings">The settings.</param>
public JsonFormatter(Settings settings)
{
this.settings = settings;
this.settings = ProtoPreconditions.CheckNotNull(settings, nameof(settings));
}

/// <summary>
Expand Down
2 changes: 1 addition & 1 deletion csharp/src/Google.Protobuf/JsonParser.cs
Expand Up @@ -110,7 +110,7 @@ private static void MergeWrapperField(JsonParser parser, IMessage message, JsonT
/// <param name="settings">The settings.</param>
public JsonParser(Settings settings)
{
this.settings = settings;
this.settings = ProtoPreconditions.CheckNotNull(settings, nameof(settings));
}

/// <summary>
Expand Down
12 changes: 0 additions & 12 deletions csharp/src/Google.Protobuf/MessageParser.cs
Expand Up @@ -72,7 +72,6 @@ public IMessage ParseFrom(byte[] data)
{
IMessage message = factory();
message.MergeFrom(data, DiscardUnknownFields, Extensions);
CheckMergedRequiredFields(message);
return message;
}

Expand All @@ -87,7 +86,6 @@ public IMessage ParseFrom(byte[] data, int offset, int length)
{
IMessage message = factory();
message.MergeFrom(data, offset, length, DiscardUnknownFields, Extensions);
CheckMergedRequiredFields(message);
return message;
}

Expand All @@ -100,7 +98,6 @@ public IMessage ParseFrom(ByteString data)
{
IMessage message = factory();
message.MergeFrom(data, DiscardUnknownFields, Extensions);
CheckMergedRequiredFields(message);
return message;
}

Expand All @@ -113,7 +110,6 @@ public IMessage ParseFrom(Stream input)
{
IMessage message = factory();
message.MergeFrom(input, DiscardUnknownFields, Extensions);
CheckMergedRequiredFields(message);
return message;
}

Expand All @@ -130,7 +126,6 @@ public IMessage ParseDelimitedFrom(Stream input)
{
IMessage message = factory();
message.MergeDelimitedFrom(input, DiscardUnknownFields, Extensions);
CheckMergedRequiredFields(message);
return message;
}

Expand All @@ -143,7 +138,6 @@ public IMessage ParseFrom(CodedInputStream input)
{
IMessage message = factory();
MergeFrom(message, input);
CheckMergedRequiredFields(message);
return message;
}

Expand Down Expand Up @@ -176,12 +170,6 @@ internal void MergeFrom(IMessage message, CodedInputStream codedInput)
}
}

internal static void CheckMergedRequiredFields(IMessage message)
{
if (!message.IsInitialized())
throw new InvalidOperationException("Parsed message does not contain all required fields");
}

/// <summary>
/// Creates a new message parser which optionally discards unknown fields when parsing.
/// </summary>
Expand Down
10 changes: 4 additions & 6 deletions csharp/src/Google.Protobuf/Reflection/ExtensionCollection.cs
Expand Up @@ -107,13 +107,11 @@ internal void CrossLink()
{
descriptor.CrossLink();

IList<FieldDescriptor> _;
if (!declarationOrder.TryGetValue(descriptor.ExtendeeType, out _))
{
declarationOrder.Add(descriptor.ExtendeeType, new List<FieldDescriptor>());
}
IList<FieldDescriptor> list;
if (!declarationOrder.TryGetValue(descriptor.ExtendeeType, out list))
declarationOrder.Add(descriptor.ExtendeeType, list = new List<FieldDescriptor>());

declarationOrder[descriptor.ExtendeeType].Add(descriptor);
list.Add(descriptor);
}

extensionsByTypeInDeclarationOrder = declarationOrder
Expand Down

0 comments on commit 71c492d

Please sign in to comment.