From 611094ffa4014ba34e6f2c8dc083878ab6073411 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Sat, 30 Mar 2019 13:02:58 +0100 Subject: Fix parsing "a" abbreviation without padding whitespace --- src/n3.c | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) (limited to 'src/n3.c') diff --git a/src/n3.c b/src/n3.c index 5bd3052c..0037c829 100644 --- a/src/n3.c +++ b/src/n3.c @@ -801,18 +801,6 @@ except: return r_err(reader, SERD_ERR_BAD_SYNTAX, "bad literal syntax\n"); } -inline static bool -is_token_end(uint8_t c) -{ - switch (c) { - case 0x9: case 0xA: case 0xD: case 0x20: case '\0': - case '#': case '.': case ';': case '<': - return true; - default: - return false; - } -} - static bool read_verb(SerdReader* reader, Ref* dest) { @@ -827,8 +815,9 @@ read_verb(SerdReader* reader, Ref* dest) const SerdStatus st = read_PN_PREFIX(reader, *dest); bool ate_dot = false; SerdNode* node = deref(reader, *dest); + const uint8_t next = peek_byte(reader); if (!st && node->n_bytes == 1 && node->buf[0] == 'a' && - is_token_end(peek_byte(reader))) { + next != ':' && !is_PN_CHARS_BASE(next)) { pop_node(reader, *dest); return (*dest = push_node(reader, SERD_URI, NS_RDF "type", 47)); } else if (st > SERD_FAILURE || -- cgit v1.2.1