aboutsummaryrefslogtreecommitdiffstats
path: root/src/reader.h
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2020-08-15 20:11:19 +0200
committerDavid Robillard <d@drobilla.net>2022-01-13 23:03:37 -0500
commita10fddf0f697e78325ddcfbc71af8f154ffd2a82 (patch)
tree75c2dd20aef99bff82dc81c93ab29b81313a9c8e /src/reader.h
parent0839a0fda214250c41c07c799c700f4432e54963 (diff)
downloadserd-a10fddf0f697e78325ddcfbc71af8f154ffd2a82.tar.gz
serd-a10fddf0f697e78325ddcfbc71af8f154ffd2a82.tar.bz2
serd-a10fddf0f697e78325ddcfbc71af8f154ffd2a82.zip
Improve reader error handling
Diffstat (limited to 'src/reader.h')
-rw-r--r--src/reader.h19
1 files changed, 12 insertions, 7 deletions
diff --git a/src/reader.h b/src/reader.h
index 9f48601d..632d5257 100644
--- a/src/reader.h
+++ b/src/reader.h
@@ -120,26 +120,31 @@ eat_byte_safe(SerdReader* reader, const int byte)
return c;
}
-static inline int
+static inline SerdStatus
eat_byte_check(SerdReader* reader, const int byte)
{
const int c = peek_byte(reader);
if (c != byte) {
- r_err(reader, SERD_ERR_BAD_SYNTAX, "expected `%c', not `%c'\n", byte, c);
- return 0;
+ return r_err(
+ reader, SERD_ERR_BAD_SYNTAX, "expected `%c', not `%c'\n", byte, c);
}
- return eat_byte_safe(reader, byte);
+
+ eat_byte_safe(reader, byte);
+ return SERD_SUCCESS;
}
static inline SerdStatus
eat_string(SerdReader* reader, const char* str, unsigned n)
{
+ SerdStatus st = SERD_SUCCESS;
+
for (unsigned i = 0; i < n; ++i) {
- if (!eat_byte_check(reader, ((const uint8_t*)str)[i])) {
- return SERD_ERR_BAD_SYNTAX;
+ if ((st = eat_byte_check(reader, ((const uint8_t*)str)[i]))) {
+ return st;
}
}
- return SERD_SUCCESS;
+
+ return st;
}
static inline SerdStatus