aboutsummaryrefslogtreecommitdiff
path: root/src/ProtoGen/MessageGenerator.cs
diff options
context:
space:
mode:
authorJon Skeet <skeet@pobox.com>2010-05-19 21:07:58 +0100
committerJon Skeet <skeet@pobox.com>2010-05-19 21:07:58 +0100
commit17ded8261d19f79181dc71402f019993667fe0df (patch)
tree7fcd3bad8cb071becca7090f48c0204aa6f36ebd /src/ProtoGen/MessageGenerator.cs
parentae9b3ff224eb251674584e8e414010d2d0ed2cb1 (diff)
downloadprotobuf-17ded8261d19f79181dc71402f019993667fe0df.tar.gz
protobuf-17ded8261d19f79181dc71402f019993667fe0df.tar.bz2
protobuf-17ded8261d19f79181dc71402f019993667fe0df.zip
Fix issue 10 - check serialized size before writing to stream
Diffstat (limited to 'src/ProtoGen/MessageGenerator.cs')
-rw-r--r--src/ProtoGen/MessageGenerator.cs2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/ProtoGen/MessageGenerator.cs b/src/ProtoGen/MessageGenerator.cs
index be32d802..3488cdc9 100644
--- a/src/ProtoGen/MessageGenerator.cs
+++ b/src/ProtoGen/MessageGenerator.cs
@@ -193,6 +193,8 @@ namespace Google.ProtocolBuffers.ProtoGen {
writer.WriteLine("public override void WriteTo(pb::CodedOutputStream output) {");
writer.Indent();
+ // Make sure we've computed the serialized length, so that packed fields are generated correctly.
+ writer.WriteLine("int size = SerializedSize;");
if (Descriptor.Proto.ExtensionRangeList.Count > 0) {
writer.WriteLine("pb::ExtendableMessage<{0}, {0}.Builder>.ExtensionWriter extensionWriter = CreateExtensionWriter(this);",
ClassName);