common: compile libfd-tracker as C++
[lttng-tools.git] / src / common / filter / filter-visitor-generate-ir.c
index b7bc17d18ce0bb742e9b848ef4a079ecff39dca8..64e41ec939e73ee98215763febb1b9f40a8a5390 100644 (file)
@@ -13,7 +13,6 @@
 #include <unistd.h>
 #include <string.h>
 #include <stdlib.h>
-#include <assert.h>
 #include <inttypes.h>
 #include "filter-ast.h"
 #include "filter-parser.h"
@@ -63,7 +62,7 @@ struct ir_op *make_op_root(struct ir_op *child, enum ir_side side)
 static
 enum ir_load_string_type get_literal_string_type(const char *string)
 {
-       assert(string);
+       LTTNG_ASSERT(string);
 
        if (strutils_is_star_glob_pattern(string)) {
                if (strutils_is_star_at_the_end_only_glob_pattern(string)) {
@@ -171,7 +170,7 @@ struct filter_node *load_expression_get_forward_chain(struct filter_node *node)
        struct filter_node *prev_node;
 
        for (;;) {
-               assert(node->type == NODE_EXPRESSION);
+               LTTNG_ASSERT(node->type == NODE_EXPRESSION);
                prev_node = node;
                node = node->u.expression.prev;
                if (!node) {
@@ -244,6 +243,11 @@ struct ir_load_expression *create_load_expression(struct filter_node *node)
                                bracket_node != NULL;
                                bracket_node = bracket_node->u.expression.next_bracket) {
                        prev_op = load_exp_op;
+                       if (bracket_node->type != NODE_EXPRESSION ||
+                               bracket_node->u.expression.type != AST_EXP_CONSTANT) {
+                                       fprintf(stderr, "[error] Expecting constant index in array expression\n");
+                                       goto error;
+                               }
                        load_exp_op = calloc(sizeof(struct ir_load_expression_op), 1);
                        if (!load_exp_op)
                                goto error;
@@ -888,14 +892,12 @@ struct ir_op *generate_ir_recursive(struct filter_parser_ctx *ctx,
        return 0;
 }
 
-LTTNG_HIDDEN
 void filter_ir_free(struct filter_parser_ctx *ctx)
 {
        filter_free_ir_recursive(ctx->ir_root);
        ctx->ir_root = NULL;
 }
 
-LTTNG_HIDDEN
 int filter_visitor_ir_generate(struct filter_parser_ctx *ctx)
 {
        struct ir_op *op;
This page took 0.02448 seconds and 4 git commands to generate.