diff options
author | Jon Skeet <skeet@pobox.com> | 2010-05-19 21:07:58 +0100 |
---|---|---|
committer | Jon Skeet <skeet@pobox.com> | 2010-05-19 21:07:58 +0100 |
commit | 17ded8261d19f79181dc71402f019993667fe0df (patch) | |
tree | 7fcd3bad8cb071becca7090f48c0204aa6f36ebd /src/ProtoGen | |
parent | ae9b3ff224eb251674584e8e414010d2d0ed2cb1 (diff) | |
download | protobuf-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')
-rw-r--r-- | src/ProtoGen/MessageGenerator.cs | 2 |
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); |