bool decode_unionmessage_contents(pb_istream_t *stream, const pb_field_t fields[], void *dest_struct)
{
- pb_field_t field = {}; /* NB: Could get rid of this wrapper by fixing issue #2. */
- field.ptr = fields;
+ pb_istream_t substream;
+ bool status;
+ if (!pb_make_string_substream(stream, &substream))
+ return false;
- return pb_dec_submessage(stream, &field, dest_struct);
+ status = pb_decode(&substream, fields, dest_struct);
+ pb_close_string_substream(stream, &substream);
+ return status;
}
int main()
if (!status)
{
- printf("Decoding failed.\n");
+ printf("Decode failed: %s\n", PB_GET_ERROR(&stream));
return 1;
}