aboutsummaryrefslogtreecommitdiff
path: root/src/ProtocolBuffers/MessageStreamIterator.cs
diff options
context:
space:
mode:
authorcsharptest <roger@csharptest.net>2011-06-03 14:15:21 -0500
committerrogerk <devnull@localhost>2011-06-03 14:15:21 -0500
commit123e534914df3dbdcd918ec4f8d79c47a3bf85e5 (patch)
tree036d1f3d61f9a5eb3dcb6950f35a0bd32022058e /src/ProtocolBuffers/MessageStreamIterator.cs
parentffafdaa0f9a96d17d456c844a3e554512a5c121d (diff)
downloadprotobuf-123e534914df3dbdcd918ec4f8d79c47a3bf85e5.tar.gz
protobuf-123e534914df3dbdcd918ec4f8d79c47a3bf85e5.tar.bz2
protobuf-123e534914df3dbdcd918ec4f8d79c47a3bf85e5.zip
Canged CodedInputStream.ReadTag to use boolean result with out params to
support reading a field name rather than a field tag.
Diffstat (limited to 'src/ProtocolBuffers/MessageStreamIterator.cs')
-rw-r--r--src/ProtocolBuffers/MessageStreamIterator.cs11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/ProtocolBuffers/MessageStreamIterator.cs b/src/ProtocolBuffers/MessageStreamIterator.cs
index 7bc32383..9b266fa4 100644
--- a/src/ProtocolBuffers/MessageStreamIterator.cs
+++ b/src/ProtocolBuffers/MessageStreamIterator.cs
@@ -219,13 +219,14 @@ namespace Google.ProtocolBuffers
CodedInputStream input = CodedInputStream.CreateInstance(stream);
input.SetSizeLimit(sizeLimit);
uint tag;
- while ((tag = input.ReadTag()) != 0)
+ string name;
+ while (input.ReadTag(out tag, out name))
{
- if (tag != ExpectedTag)
- {
+ if ((tag == 0 && name == "item") || (tag == ExpectedTag))
+ yield return messageReader(input, extensionRegistry);
+ else
throw InvalidProtocolBufferException.InvalidMessageStreamTag();
- }
- yield return messageReader(input, extensionRegistry);
+
input.ResetSizeCounter();
}
}