aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/google/protobuf/compiler/csharp/csharp_repeated_message_field.cc
diff options
context:
space:
mode:
authorGravatar Jon Skeet <skeet@pobox.com>2015-06-12 11:19:50 +0100
committerGravatar Jon Skeet <skeet@pobox.com>2015-06-12 11:19:50 +0100
commit1b71db1180953e592e134ddd509f54d6024df593 (patch)
tree66a88850f0b176802431329b9870b00858e41cfc /src/google/protobuf/compiler/csharp/csharp_repeated_message_field.cc
parent9b66768e257dd8e61895d8a2c40f078f9987b577 (diff)
Optimization of CalculateSize: avoid foreach over empty lists.
Diffstat (limited to 'src/google/protobuf/compiler/csharp/csharp_repeated_message_field.cc')
-rw-r--r--src/google/protobuf/compiler/csharp/csharp_repeated_message_field.cc6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/google/protobuf/compiler/csharp/csharp_repeated_message_field.cc b/src/google/protobuf/compiler/csharp/csharp_repeated_message_field.cc
index 6228aa67..d7e4d80f 100644
--- a/src/google/protobuf/compiler/csharp/csharp_repeated_message_field.cc
+++ b/src/google/protobuf/compiler/csharp/csharp_repeated_message_field.cc
@@ -90,8 +90,10 @@ void RepeatedMessageFieldGenerator::GenerateSerializedSizeCode(io::Printer* prin
// TODO(jonskeet): Put this into CodedOutputStream.
printer->Print(
variables_,
- "foreach ($type_name$ element in $name$_) {\n"
- " size += pb::CodedOutputStream.ComputeMessageSize($number$, element);\n"
+ "if ($name$_.Count > 0) {\n"
+ " foreach ($type_name$ element in $name$_) {\n"
+ " size += pb::CodedOutputStream.ComputeMessageSize($number$, element);\n"
+ " }\n"
"}\n");
}