your claims does not match the code of both CodedInputStream::PushLimit and WireFormatLite::ReadMessageNoVirtual.
1. PushLimit does check for a larger limit inside a smaller one (respects the closer limit). see http://code.google.com/p/protobuf/source/browse/trunk/src/google/protobuf/io/coded_stream.cc#119 2. ReadMessageNoVirtual reads the message length and passes it to PushLimit before actually parsing the message, when the masses is fully parsed, ConsumedEntireMessage is used to determine if there's anything left in the stream. see http://code.google.com/p/protobuf/source/browse/trunk/src/google/protobuf/wire_format_lite_inl.h#408 . please notice that there's no guarantee that the stream reached EOF once this ReamMessageNoVirtual returns, as this message may be a part of another one, my guess is that you didn't push a limit into the coded stream before calling this method. please let me know if this is helpful, Etal. -- You received this message because you are subscribed to the Google Groups "Protocol Buffers" group. To view this discussion on the web visit https://groups.google.com/d/msg/protobuf/-/-YU1o6RgJGYJ. To post to this group, send email to protobuf@googlegroups.com. To unsubscribe from this group, send email to protobuf+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/protobuf?hl=en.