[tracker] libtracker-data: Ensure variables are defined in aggregate expressions



commit 003f7fdd96e3c3e2588de64a69c889f848e912ec
Author: Carlos Garnacho <carlosg gnome org>
Date:   Sun Jun 5 01:44:12 2016 +0200

    libtracker-data: Ensure variables are defined in aggregate expressions
    
    Look those up and error out if they are undefined.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=759361

 src/libtracker-data/tracker-sparql-expression.vala |   10 ++++++++++
 1 files changed, 10 insertions(+), 0 deletions(-)
---
diff --git a/src/libtracker-data/tracker-sparql-expression.vala 
b/src/libtracker-data/tracker-sparql-expression.vala
index 96270cf..210fdff 100644
--- a/src/libtracker-data/tracker-sparql-expression.vala
+++ b/src/libtracker-data/tracker-sparql-expression.vala
@@ -1687,7 +1687,17 @@ class Tracker.Sparql.Expression : Object {
                if (accept (SparqlTokenType.DISTINCT)) {
                        sql.append ("DISTINCT ");
                }
+
+               bool is_var = (current () == SparqlTokenType.VAR);
                var optype = translate_expression (sql);
+
+               if (is_var) {
+                       var variable = context.get_variable (get_last_string ().substring (1));
+                       if (variable.binding == null) {
+                               throw get_error ("use of undefined variable `%s'".printf (variable.name));
+                       }
+               }
+
                expect (SparqlTokenType.CLOSE_PARENS);
                return optype;
        }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]