summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2020-10-01 01:07:44 +0200
committerCarlos Garnacho <carlosg@gnome.org>2020-10-01 12:08:47 +0200
commit8ccb230cd9335fdbce548cd375b9ef84ee7e75e3 (patch)
treed9db5b01d84f285ba5f17b7feb1c4408d49ee15a
parent4405523d7947c1076d0abbb51365bf5506060eb3 (diff)
downloadtracker-wip/carlosg/with-fix.tar.gz
libtracker-data: Unset graph after Modify clausewip/carlosg/with-fix
If the Modify clause sets a graph via 'WITH' the graph token remains but the solution underneath gets freed. That means the graph token's literal is kept "set" but containing garbage, and may wreak havoc if there are more Update clauses in the same update string that don't specify a graph, as that garbage value will be used. This may lead to warnings, crashes, and bogus graph databases being created. Eek. The 'WITH' graph is not meant to be carried over, so ensure it gets unset after dealing with the Modify clause.
-rw-r--r--src/libtracker-data/tracker-sparql.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/libtracker-data/tracker-sparql.c b/src/libtracker-data/tracker-sparql.c
index 5e26b2f28..2ff43d045 100644
--- a/src/libtracker-data/tracker-sparql.c
+++ b/src/libtracker-data/tracker-sparql.c
@@ -4572,6 +4572,8 @@ translate_Modify (TrackerSparql *sparql,
retval = iterate_solution (sparql, solution, insert, error);
}
+ tracker_token_unset (&sparql->current_state->graph);
+
tracker_solution_free (solution);
return retval;