aboutsummaryrefslogtreecommitdiff
path: root/src/ProtoGen
diff options
context:
space:
mode:
authorJon Skeet <skeet@pobox.com>2009-09-06 20:22:34 +0100
committerJon Skeet <skeet@pobox.com>2009-09-06 20:22:34 +0100
commit1872d080f709cdcae92cfbd5fae074cd30b0a070 (patch)
tree64618796d0c2dc51c0b589b6d004041f2e11252a /src/ProtoGen
parentad74853e0c0b4beaf450123ea763aa8a6bde4cdd (diff)
downloadprotobuf-1872d080f709cdcae92cfbd5fae074cd30b0a070.tar.gz
protobuf-1872d080f709cdcae92cfbd5fae074cd30b0a070.tar.bz2
protobuf-1872d080f709cdcae92cfbd5fae074cd30b0a070.zip
Fixed bug spotted by danielr
Diffstat (limited to 'src/ProtoGen')
-rw-r--r--src/ProtoGen/RepeatedPrimitiveFieldGenerator.cs5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/ProtoGen/RepeatedPrimitiveFieldGenerator.cs b/src/ProtoGen/RepeatedPrimitiveFieldGenerator.cs
index 8caa953a..b3f5d7b4 100644
--- a/src/ProtoGen/RepeatedPrimitiveFieldGenerator.cs
+++ b/src/ProtoGen/RepeatedPrimitiveFieldGenerator.cs
@@ -155,8 +155,9 @@ namespace Google.ProtocolBuffers.ProtoGen {
writer.WriteLine("size += dataSize;");
int tagSize = CodedOutputStream.ComputeTagSize(Descriptor.FieldNumber);
if (Descriptor.IsPacked) {
- writer.WriteLine("size += {0};", tagSize);
- writer.WriteLine("size += pb::CodedOutputStream.ComputeInt32SizeNoTag(dataSize);");
+ writer.WriteLine("if ({0}_.Count != 0) {{", Name);
+ writer.WriteLine(" size += {0} + pb::CodedOutputStream.ComputeInt32SizeNoTag(dataSize);", tagSize);
+ writer.WriteLine("}");
} else {
writer.WriteLine("size += {0} * {1}_.Count;", tagSize, Name);
}