libc: improve handling of stream error

This commit is contained in:
Hugues Delorme 2013-01-24 11:29:51 +01:00
parent d3c56f7a52
commit 867cdc0098
2 changed files with 11 additions and 6 deletions

View File

@ -70,8 +70,13 @@ int foug_stlb_read(foug_stlb_read_args_t args)
while (foug_stlb_no_error(error) && accum_facet_count_read < total_facet_count) { while (foug_stlb_no_error(error) && accum_facet_count_read < total_facet_count) {
const size_t facet_count_read = const size_t facet_count_read =
foug_stream_read(args.stream, buffer, FOUG_STLB_TRIANGLE_SIZE, buffer_facet_count); foug_stream_read(args.stream, buffer, FOUG_STLB_TRIANGLE_SIZE, buffer_facet_count);
error = foug_stream_error(args.stream) != 0 ? FOUG_STLB_READ_STREAM_ERROR : if (foug_stream_error(args.stream) != 0)
FOUG_STLB_READ_NO_ERROR; error = FOUG_STLB_READ_STREAM_ERROR;
else if (facet_count_read > 0)
error = FOUG_STLB_READ_NO_ERROR;
else
break; /* Exit if no facet to read */
if (foug_stlb_no_error(error)) { if (foug_stlb_no_error(error)) {
uint32_t buffer_offset = 0; uint32_t buffer_offset = 0;
uint32_t i_facet; uint32_t i_facet;

View File

@ -58,10 +58,10 @@ static size_t foug_stream_stdio_write(foug_stream_t* stream,
foug_stream_manip_t foug_stream_manip_stdio() foug_stream_manip_t foug_stream_manip_stdio()
{ {
foug_stream_manip_t manip; foug_stream_manip_t manip;
manip.at_end_func = &foug_stream_stdio_at_end; manip.at_end_func = foug_stream_stdio_at_end;
manip.error_func = &foug_stream_stdio_error; manip.error_func = foug_stream_stdio_error;
manip.read_func = &foug_stream_stdio_read; manip.read_func = foug_stream_stdio_read;
manip.write_func = &foug_stream_stdio_write; manip.write_func = foug_stream_stdio_write;
return manip; return manip;
} }