Øystein, Jørgen,
I have modified the patch a bit taking some of your suggestions into account.
The new patch is here <http://lists.mysql.com/commits/53727>.
I report errors using helper macro SERROR(s) which sets stream to ERROR state
and always returns BSTREAM_ERROR.
In case of as_write() function I still use this logic for detecting error:
if (ret != BSTREAM_OK)
return SERROR(s);
Assuming that as_write() returns either BSTREAM_ERROR or BSTREAM_OK, this is
equivalent to
if (ret == BSTREAM_ERROR)
return SERROR(s);
But the code I'm using is more robust because it will work even when as_write
starts to report more errors, not just one general BSTREAM_ERROR.
I also tried to make the spacing a bit more consistent (I hope that in reviews
we'll keep discussions about spacing to a minimum).
Øystein Grøvlen wrote:
> The errors reported from these methods to bstream_close() are ignored.
> Should this be fixed here or in a separate task?
I'm not sure if I understand this correctly. In bstream_close() I do detect
stream errors and report them to the caller. Potential errors from
bstream_end_chuck() and bstream_flush() do not interrupt execution because we
want to do the other actions regardless. Does that explain your concern?
Rafal