Code

frontend: Fixed deprecated %name-prefix syntax.
[sysdb.git] / src / frontend / grammar.y
index a261c4c81d3253320b9d8cf960378918f84d0249..26c8c1b046ddaa8df0af9c66dd2d2588a842a972 100644 (file)
@@ -63,7 +63,7 @@ sdb_fe_yyerror(YYLTYPE *lval, sdb_fe_yyscan_t scanner, const char *msg);
 %locations
 %error-verbose
 %expect 0
-%name-prefix="sdb_fe_yy"
+%name-prefix "sdb_fe_yy"
 
 %union {
        char *str;
@@ -79,11 +79,11 @@ sdb_fe_yyerror(YYLTYPE *lval, sdb_fe_yyscan_t scanner, const char *msg);
 %token SCANNER_ERROR
 
 %token AND OR NOT WHERE
-
 %token CMP_EQUAL CMP_NEQUAL CMP_REGEX CMP_NREGEX
 
+%token FETCH LIST LOOKUP
+
 %token <str> IDENTIFIER STRING
-%token <node> FETCH LIST LOOKUP
 
 /* Precedence (lowest first): */
 %left OR
@@ -255,16 +255,21 @@ matcher:
        matcher AND matcher
                {
                        $$ = sdb_store_con_matcher($1, $3);
+                       sdb_object_deref(SDB_OBJ($1));
+                       sdb_object_deref(SDB_OBJ($3));
                }
        |
        matcher OR matcher
                {
                        $$ = sdb_store_dis_matcher($1, $3);
+                       sdb_object_deref(SDB_OBJ($1));
+                       sdb_object_deref(SDB_OBJ($3));
                }
        |
        NOT matcher
                {
                        $$ = sdb_store_inv_matcher($2);
+                       sdb_object_deref(SDB_OBJ($2));
                }
        |
        compare_matcher
@@ -316,6 +321,8 @@ compare_matcher:
 
 %%
 
+/* XXX: on parse errors, allocated objects, strings, etc. need to be freed */
+
 void
 sdb_fe_yyerror(YYLTYPE *lval, sdb_fe_yyscan_t scanner, const char *msg)
 {