[tracker] SPARQL: Support \u escape sequence in string literals
- From: Jürg Billeter <juergbi src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [tracker] SPARQL: Support \u escape sequence in string literals
- Date: Fri, 12 Nov 2010 11:23:51 +0000 (UTC)
commit 44ff6b735a226344c6dc277f09aa022d4a953700
Author: Jürg Billeter <j bitron ch>
Date: Fri Nov 12 11:58:00 2010 +0100
SPARQL: Support \u escape sequence in string literals
src/libtracker-data/tracker-sparql-expression.vala | 6 ++++++
src/libtracker-data/tracker-sparql-scanner.vala | 9 +++++++++
2 files changed, 15 insertions(+), 0 deletions(-)
---
diff --git a/src/libtracker-data/tracker-sparql-expression.vala b/src/libtracker-data/tracker-sparql-expression.vala
index ee015c8..ab59bb9 100644
--- a/src/libtracker-data/tracker-sparql-expression.vala
+++ b/src/libtracker-data/tracker-sparql-expression.vala
@@ -764,6 +764,12 @@ class Tracker.Sparql.Expression : Object {
case 't':
sb.append_c ('\t');
break;
+ case 'u':
+ char* ptr = (char*) p + 1;
+ unichar c = (((unichar) ptr[0].xdigit_value () * 16 + ptr[1].xdigit_value ()) * 16 + ptr[2].xdigit_value ()) * 16 + ptr[3].xdigit_value ();
+ sb.append_unichar (c);
+ p += 4;
+ break;
}
p++;
}
diff --git a/src/libtracker-data/tracker-sparql-scanner.vala b/src/libtracker-data/tracker-sparql-scanner.vala
index f8791e9..61b4782 100644
--- a/src/libtracker-data/tracker-sparql-scanner.vala
+++ b/src/libtracker-data/tracker-sparql-scanner.vala
@@ -695,6 +695,15 @@ public class Tracker.SparqlScanner : Object {
current++;
token_length_in_chars++;
break;
+ case 'u':
+ for (int i = 0; i < 4; i++) {
+ if (current + i + 1 >= end || !current[i + 1].isxdigit ()) {
+ throw new Sparql.Error.PARSE ("%d.%d: invalid escape sequence", line, column + token_length_in_chars);
+ }
+ }
+ current += 5;
+ token_length_in_chars += 5;
+ break;
default:
throw new Sparql.Error.PARSE ("%d.%d: invalid escape sequence", line, column + token_length_in_chars);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]