diff options
author | Carlos Garnacho <carlosg@gnome.org> | 2022-03-24 11:02:30 +0100 |
---|---|---|
committer | Carlos Garnacho <carlosg@gnome.org> | 2022-03-27 21:34:36 +0200 |
commit | d73e7af75dca912f3da1ec26898e6b44fa7e3799 (patch) | |
tree | 914fdd973ab48c34e6a109d21a5ce9e57de2cede | |
parent | 60046b2bcd21ec4e4866d73d9167cc0633efedb6 (diff) | |
download | tracker-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.h | 2 |
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' |