Fixed a bug related to submessage encoding into memory buffer.

Stream state was not copied back from substream in pb_enc_submessage,
which caused garbage output if the stream callback modified the state.

Expanded tests to cover this problem.

Thanks to Paweł Pery for debugging and reporting this problem.


git-svn-id: https://svn.kapsi.fi/jpa/nanopb@1089 e3a754e5-d11d-0410-8d38-ebb782a927b9
This commit is contained in:
Petteri Aimonen
2011-12-30 08:43:50 +00:00
parent ad7a0e2111
commit 1506450b11
5 changed files with 67 additions and 26 deletions

View File

@@ -376,6 +376,7 @@ bool checkreturn pb_enc_submessage(pb_ostream_t *stream, const pb_field_t *field
status = pb_encode(&substream, (pb_field_t*)field->ptr, src);
stream->bytes_written += substream.bytes_written;
stream->state = substream.state;
if (substream.bytes_written != size)
return false;