From a10fddf0f697e78325ddcfbc71af8f154ffd2a82 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Sat, 15 Aug 2020 20:11:19 +0200 Subject: Improve reader error handling --- src/reader.h | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) (limited to 'src/reader.h') 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 -- cgit v1.2.1