Fix passing of error message from substream callback (#703)
Error messages from submessage callbacks were being
replaced with "callback failed".
diff --git a/pb_decode.c b/pb_decode.c
index 28059be..5405c87 100644
--- a/pb_decode.c
+++ b/pb_decode.c
@@ -761,7 +761,10 @@
{
prev_bytes_left = substream.bytes_left;
if (!field->descriptor->field_callback(&substream, NULL, field))
- PB_RETURN_ERROR(stream, "callback failed");
+ {
+ PB_SET_ERROR(stream, substream.errmsg ? substream.errmsg : "callback failed");
+ return false;
+ }
} while (substream.bytes_left > 0 && substream.bytes_left < prev_bytes_left);
if (!pb_close_string_substream(stream, &substream))