Code

Added tests for sdb_fe_parse_expr() and fixed the implementation.
[sysdb.git] / src / frontend / parser.c
index f16b71fd952a0bcc4c94c95c5d6eedb8d0dad21c..785b7e40b59caecc3f34d5e8660f7d04f918e397 100644 (file)
@@ -112,8 +112,10 @@ sdb_fe_parse_matcher(const char *cond, int len)
        }
 
        node = SDB_CONN_NODE(sdb_llist_get(yyextra.parsetree, 0));
-       if (! node)
+       if (! node) {
+               sdb_llist_destroy(yyextra.parsetree);
                return NULL;
+       }
 
        if (node->cmd == CONNECTION_MATCHER) {
                m = CONN_MATCHER(node)->matcher;
@@ -152,8 +154,10 @@ sdb_fe_parse_expr(const char *expr, int len)
        }
 
        node = SDB_CONN_NODE(sdb_llist_get(yyextra.parsetree, 0));
-       if (! node)
+       if (! node) {
+               sdb_llist_destroy(yyextra.parsetree);
                return NULL;
+       }
 
        if (node->cmd == CONNECTION_EXPR) {
                e = CONN_EXPR(node)->expr;