summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2022-03-24 11:02:30 +0100
committerCarlos Garnacho <carlosg@gnome.org>2022-03-27 21:34:36 +0200
commitd73e7af75dca912f3da1ec26898e6b44fa7e3799 (patch)
tree914fdd973ab48c34e6a109d21a5ce9e57de2cede
parent60046b2bcd21ec4e4866d73d9167cc0633efedb6 (diff)
downloadtracker-d73e7af75dca912f3da1ec26898e6b44fa7e3799.tar.gz
libtracker-data: Try STRING_LITERAL_LONG1/2 before STRING_LITERAL1/2
As our parser rules are ordered by greediness, and as """str""" and '''str''' long string forms partially match the shorter string literal forms, we mistakenly parse these as an empty string (e.g. "" or '') followed by "garbage". We should set long string literal forms first here, so these are tried before the short string forms. Fixes handling of long strings all through the query language.
-rw-r--r--src/libtracker-data/tracker-sparql-grammar.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/libtracker-data/tracker-sparql-grammar.h b/src/libtracker-data/tracker-sparql-grammar.h
index 8835539ad..673c39721 100644
--- a/src/libtracker-data/tracker-sparql-grammar.h
+++ b/src/libtracker-data/tracker-sparql-grammar.h
@@ -556,7 +556,7 @@ static const TrackerGrammarRule rule_iri[] = { OR(helper_iri_or), NIL };
* TRACKER EXTENSION:
* The terminal PARAMETERIZED_VAR is additionally accepted
*/
-static const TrackerGrammarRule helper_String_or[] = { T(STRING_LITERAL1), T(STRING_LITERAL2), T(STRING_LITERAL_LONG1), T(STRING_LITERAL_LONG2), T(PARAMETERIZED_VAR), NIL };
+static const TrackerGrammarRule helper_String_or[] = { T(STRING_LITERAL_LONG1), T(STRING_LITERAL_LONG2), T(STRING_LITERAL1), T(STRING_LITERAL2), T(PARAMETERIZED_VAR), NIL };
static const TrackerGrammarRule rule_String[] = { OR(helper_String_or), NIL };
/* BooleanLiteral ::= 'true' | 'false'