summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2023-01-11 15:56:13 +0100
committerCarlos Garnacho <carlosg@gnome.org>2023-01-11 16:17:35 +0100
commitd75ad7e585e1b9b8c346a736d524c2ab06a90b96 (patch)
tree291463d14489792df41bc4fe161117c5fac05e1e
parent3ed049c4937eb8ed8a0ddb3917157916834b165a (diff)
downloadtracker-d75ad7e585e1b9b8c346a736d524c2ab06a90b96.tar.gz
libtracker-sparql: Avoid detaching all nodes in JSON-LD serializer
If there are circular references, we might end up in a state that all JSON nodes were made part of a subtree, leaving us with no "root" node to unroll the data. Make it sure that we are left at least with a single root node, that every other nodes hang from.
-rw-r--r--src/libtracker-sparql/tracker-serializer-json-ld.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/libtracker-sparql/tracker-serializer-json-ld.c b/src/libtracker-sparql/tracker-serializer-json-ld.c
index 52949f549..27e6a735d 100644
--- a/src/libtracker-sparql/tracker-serializer-json-ld.c
+++ b/src/libtracker-sparql/tracker-serializer-json-ld.c
@@ -307,6 +307,7 @@ serialize_up_to_position (TrackerSerializerJsonLD *serializer_json_ld,
res);
if (node &&
+ serializer_json_ld->recent_resources->next != NULL &&
serializer_json_ld->cur_resource != json_node_get_object (node) &&
g_list_find (serializer_json_ld->recent_resources, node)) {
/* This is still a "root" node, make it part of this tree */