aboutsummaryrefslogtreecommitdiffstats
path: root/src/byte_source.h
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2018-11-25 18:08:54 +0100
committerDavid Robillard <d@drobilla.net>2018-11-25 22:12:48 +0100
commit2a1a2522b23122e2428019489df9ddb5b0ec30ea (patch)
treea3edb59a31ca127f145cc0ca572a0d3eaa2f72e4 /src/byte_source.h
parent61f44d803f7b197c83547927ef86329d9a13c5d2 (diff)
downloadserd-2a1a2522b23122e2428019489df9ddb5b0ec30ea.tar.gz
serd-2a1a2522b23122e2428019489df9ddb5b0ec30ea.tar.bz2
serd-2a1a2522b23122e2428019489df9ddb5b0ec30ea.zip
Remove reader status and handle errors more precisely
Diffstat (limited to 'src/byte_source.h')
-rw-r--r--src/byte_source.h5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/byte_source.h b/src/byte_source.h
index 34df4fa3..bd4ec988 100644
--- a/src/byte_source.h
+++ b/src/byte_source.h
@@ -88,13 +88,14 @@ serd_byte_source_advance(SerdByteSource* source)
}
if (source->from_stream) {
- source->eof = false;
if (source->page_size > 1) {
if (++source->read_head == source->page_size) {
+ source->eof = false;
st = serd_byte_source_page(source);
}
} else {
if (!source->read_func(&source->read_byte, 1, 1, source->stream)) {
+ source->eof = true;
st = source->error_func(source->stream) ? SERD_ERR_UNKNOWN
: SERD_FAILURE;
}
@@ -103,7 +104,7 @@ serd_byte_source_advance(SerdByteSource* source)
++source->read_head; // Move to next character in string
}
- return source->eof ? SERD_FAILURE : st;
+ return st ? st : source->eof ? SERD_FAILURE : SERD_SUCCESS;
}
#endif // SERD_BYTE_SOURCE_H