diff options
author | David Robillard <d@drobilla.net> | 2015-09-04 20:30:31 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2015-09-04 20:30:31 +0000 |
commit | ecb322d8e5d751c6b2a17fd7df0cbfa200e2cf64 (patch) | |
tree | ff528d2f3e0bf0f4859b7a0f33d402363d119ffc | |
parent | 4976746ca753f736dbf3c5f9f019d134d139b284 (diff) | |
download | serd-ecb322d8e5d751c6b2a17fd7df0cbfa200e2cf64.tar.gz serd-ecb322d8e5d751c6b2a17fd7df0cbfa200e2cf64.tar.bz2 serd-ecb322d8e5d751c6b2a17fd7df0cbfa200e2cf64.zip |
Fix clash resolution when a blank node ID prefix is set.
git-svn-id: http://svn.drobilla.net/serd/trunk@490 490d8e77-9747-427b-9fa3-0b8f29cee8a0
-rw-r--r-- | NEWS | 3 | ||||
-rw-r--r-- | src/reader.c | 9 |
2 files changed, 7 insertions, 5 deletions
@@ -5,12 +5,13 @@ serd (0.21.1) unstable; * Add serd_reader_set_strict() and -l (lax) option to serdi to tolerate parsing URIs with escaped characters * Fix reading statements ending with a blank then dot with no space + * Fix clash resolution when a blank node ID prefix is set * Fix serializing fractional decimals that would round up * Add support for Turtle named inline nodes extension * Report errors for invalid IRI characters and missing terminators * Fix warnings when building with ISO C++ compilers - -- David Robillard <d@drobilla.net> Sat, 04 Apr 2015 16:22:17 -0400 + -- David Robillard <d@drobilla.net> Fri, 04 Sep 2015 16:27:23 -0400 serd (0.20.0) stable; diff --git a/src/reader.c b/src/reader.c index 012dcb43..ec1a6034 100644 --- a/src/reader.c +++ b/src/reader.c @@ -1035,11 +1035,12 @@ read_BLANK_NODE_LABEL(SerdReader* reader, bool* ate_dot) } if (reader->syntax == SERD_TURTLE) { - if (is_digit(n->buf[1])) { - if (n->buf[0] == 'b') { - ((char*)n->buf)[0] = 'B'; // Prevent clash + if (is_digit(n->buf[reader->bprefix_len + 1])) { + if ((n->buf[reader->bprefix_len]) == 'b') { + ((char*)n->buf)[reader->bprefix_len] = 'B'; // Prevent clash reader->seen_genid = true; - } else if (reader->seen_genid && n->buf[0] == 'B') { + } else if (reader->seen_genid && + n->buf[reader->bprefix_len] == 'B') { r_err(reader, SERD_ERR_ID_CLASH, "found both `b' and `B' blank IDs, prefix required\n"); return pop_node(reader, ref); |