aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--NEWS3
-rw-r--r--src/n3.c5
-rw-r--r--test/extra/bad/bad-predicate-in-blank.ttl1
-rw-r--r--test/extra/bad/manifest.ttl6
4 files changed, 12 insertions, 3 deletions
diff --git a/NEWS b/NEWS
index 1bcd0352..8a14d2ed 100644
--- a/NEWS
+++ b/NEWS
@@ -1,6 +1,7 @@
serd (0.32.5) unstable; urgency=medium
* Drop graphs when writing Turtle output
+ * Fix handling of bad predicates in anonymous blank nodes
* Fix handling of some invalid EOF cases in lax mode
* Fix invalid characters in error messages
* Fix reading numbers with no space before the final dot
@@ -9,7 +10,7 @@ serd (0.32.5) unstable; urgency=medium
* Remove project and version number from man page OS field
* Write a blank line between statements and Turtle/TriG directives
- -- David Robillard <d@drobilla.net> Fri, 11 Apr 2025 16:16:54 +0000
+ -- David Robillard <d@drobilla.net> Thu, 26 Jun 2025 03:48:18 +0000
serd (0.32.4) stable; urgency=medium
diff --git a/src/n3.c b/src/n3.c
index 04bc1300..b0bd4476 100644
--- a/src/n3.c
+++ b/src/n3.c
@@ -925,6 +925,7 @@ read_verb(SerdReader* const reader, Ref* const dest)
if (st) {
pop_node(reader, p);
+ *dest = 0;
return r_err(reader, st, "bad verb\n");
}
@@ -1314,8 +1315,8 @@ read_collection(SerdReader* const reader, ReadContext ctx, Ref* const dest)
// _:node rdf:rest _:rest
*ctx.flags |= SERD_LIST_CONT;
ctx.predicate = reader->rdf_rest;
- if ((st =
- emit_statement(reader, ctx, (end ? reader->rdf_nil : rest), 0, 0))) {
+ st = emit_statement(reader, ctx, (end ? reader->rdf_nil : rest), 0, 0);
+ if (st) {
break;
}
diff --git a/test/extra/bad/bad-predicate-in-blank.ttl b/test/extra/bad/bad-predicate-in-blank.ttl
new file mode 100644
index 00000000..e4200f15
--- /dev/null
+++ b/test/extra/bad/bad-predicate-in-blank.ttl
@@ -0,0 +1 @@
+<a> <b> [ ERRORHERE <c> ]
diff --git a/test/extra/bad/manifest.ttl b/test/extra/bad/manifest.ttl
index a4bb4b4f..acadde28 100644
--- a/test/extra/bad/manifest.ttl
+++ b/test/extra/bad/manifest.ttl
@@ -84,6 +84,7 @@
<#bad-object2>
<#bad-paths>
<#bad-pn-escape>
+ <#bad-predicate-in-blank>
<#bad-prefix>
<#bad-prefix-dot>
<#bad-prefix-missing-colon>
@@ -494,6 +495,11 @@
mf:action <bad-pn-escape.ttl> ;
mf:name "bad-pn-escape" .
+<#bad-predicate-in-blank>
+ a rdft:TestTurtleNegativeSyntax ;
+ mf:action <bad-predicate-in-blank.ttl> ;
+ mf:name "bad-predicate-in-blank" .
+
<#bad-prefix>
a rdft:TestTurtleNegativeSyntax ;
mf:action <bad-prefix.ttl> ;